js数组操作
1.遍历数组:
jquery
$.each(arr,function(index,value,arr){
console.log(index+":"+value);
})js:
arr.forEach(function(value,index,arr){
console.log(index+":"+value+":"+arr);
})注意jq与js写法的不同,value与index的先后问题;
Foreach方法还可以传多个参数进去:
Array.forEach(function,thisobject);thisobject可以改变this值的指向问题
2,遍历并且改变数组:
Array.map(callback(value,index,arr){
return ;
})
var newarr=[1,2,3,0].map(function(value,index,arr){
return value==0?new Number():value;
})map方法虽然能改变数组,也可以筛选数组,但是不能过滤数组;
3,过滤数组:
Array.grep(callback(value,index,arr){
})
var greparr=$.grep([1,2,3,0],function(value){
return value!=0;
})//greparr=1 2 3;Array.filter(callback(value,index,arr){
})
var filterarr=[1,2,3,0].filter(function(value){
return value!=0;
})
alert(filterarr);//filterarr=1 2 3;筛选数组的方法支持链式调用
4,按一定条件筛选数组,并且返回一个bool值
筛选合乎某些条件的数组:类似于选择器的has()
some方法():
1>:只有一个参数callback:
alert([1,2,3,40].some(function(value){
return value>10;
})) //返回就停止执行2>:两个参数callback,thisobject:
some(function,thisobject)
要求所有的成员都满足的数组函数: alert([1,2,3,40].every(function(value){
return value>10;
}))indexof():
Array.indexOf(searchelement,startindex),返回searchelement的索引值,未找到返回-1,如果startindex的值不符合要求 ,默认从首位开始查找;
![](index_files/203553328.png)
[1,2,3,40].indexOf(40,2) //3 40的index值
lastindexof():
Array.lastindexOf(searchelement,startindex),与indexOf不同的是lastindexOf是从末尾开始查找,stratindex默认为Array.length-1而不是0;
alert([20, 51, 72, 33, 54].lastIndexOf(5,3)); //1
6,迭代,递归:围绕数组一周
reduce(callback,initialValue):
callback(precious,current,index,array),initialValue:是一个可选参数,指定数组的初始值,如果有的话就代表着callback的第一个参数值precious为initialValue,迭代次数多了一次,例如以下例子:
console.log([1,2,3,4].reduce(function(pre,next,index,arr){
return pre+"+"+next;
},3))![](index_files/203566812.png)
如果没有就指的是从数组的第一个开始,此时的precious指的是数组的第一个元素,current指的是第二个元素,
console.log([1,2,3,4].reduce(function(pre,next,index,arr){
return pre+"+"+next;
![](index_files/204102906.png)
使用迭代实现二维数组的扁平化:
var matrix = [
[1, 2],
[3, 4],
[5, 6]
];
console.log(matrix.reduce(function(previous, current) {
return previous.concat(current); //concat函数是连接一个字符串或者是数组用的
}));object.concat(element1,element2.....element):按照顺序连接一个字符串或者是数组
var str="Ss";
console.log(str.concat("sss","www"));<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<div class="div4"></div>var eleDivs = document.getElementsByTagName("div");
Array.prototype.forEach.call(eleDivs, function(div) {
console.log("该div类名是:" + (div.className || "空"));
});