1.过滤方法
index参数是当前的匹配元素在原来的元素集合中的索引。
如果您对上面的解释不清楚的话(本人表达能力有点欠缺~^_^),可以好好看看下面的例子:
filter()会跳过稀疏数组中缺少的元素,他的返回值总是稠密的
第一个参数是需要搜索的值,第二个参数是可选的值:他指定数组中的一个索引,从哪里开始搜索
a=[5,4,3,2,1];
everyother=a.filter(function(i){return i%2==0});
console.log(everyother,a) //[4, 2] [5, 4, 3, 2, 1]
everyother=a.filter(function(x,i){return i%2==0});
console.log(everyother,a) //[5, 3, 1] [5, 4, 3, 2, 1]
.filter( function(index) )
这种使用方法是对匹配的元素进行遍历,如果function(index)返回的值为true的话,那么这个元素就被选中,如果返回值为false的话,那么这个元素就不被选中
index参数是当前的匹配元素在原来的元素集合中的索引。
如果您对上面的解释不清楚的话(本人表达能力有点欠缺~^_^),可以好好看看下面的例子:
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
<div id="fifth"></div>
<div id="sixth"></div>
jquery代码:
$("div").filter(function(index) {
return index == 1 || $(this).attr("id") == "fourth";
}).css("border", "5px double blue");
上面代码的结果是 第二个div元素和 id为“fourth”的div元素的边框变成了双线颜色为蓝色
filter()会跳过稀疏数组中缺少的元素,他的返回值总是稠密的
b=[5,4,3,2,1,null,undefined,,];
dense=b.filter(function(){return true;}) //压缩稀疏数组的空缺
d=b.filter(function(x){return x!==undefined && x!=null;}); //压缩空缺并删除underfined和null元素
console.log(dense,b,d) //[5, 4, 3, 2, 1, null, undefined] [5, 4, 3, 2, 1, null, undefined, undefined] [5, 4, 3, 2, 1]
2.every()和some() 数组的逻辑判定,返回true或false
a=[1,2,3,4,5];
a.every(function(x){return x<10;}) //true;所有的值都小于10
a.every(function(x){return x%2===0;}) //false;不是所有的值都是偶数
some()就像数学中的“存在”量词,当数组中至少有一个元素调用判断函数返回true,并且当且仅当所有的元素来判定时返回false
a=[1,2,3,4,5];
a.some(function(x){return x%2===0;}) //true:a 含有偶数值
a.some(isNaN) //false:a不包含非数值
3.reduce()
reduce()需要两个参数,第一个是执行化简操作的函数,这里是通过加法,乘法,或取最大值的方法组合两个值,第二个参数是一个传递给函数的初始值
a=[1,2,3,4,5];
sum=a.reduce(function(x,y){return x+y},0); //15
product=a.reduce(function(x,y){return x*y},1); //120
max=a.reduce(function(x,y){return (x>y)?x:y; }); //5
4.indexOf()和lastIndexOf() 搜索整个数组中具有给定值的元素,返回第一个元素的索引或者没有找到返回-1
第一个参数是需要搜索的值,第二个参数是可选的值:他指定数组中的一个索引,从哪里开始搜索
a=[0,1,2,1,0];
a.indexOf(1) //1:a[1]=1
a.lastIndexOf(1) //3:a[3]=1
a.indexOf(3) //-1:没有值为3的元素
a=[0,1,2,1,0,1,3];
pos=a.indexOf(1,2); //3:a[3]=1,从索引为2的地方开始搜索
//在数组中查找所有出现的的x,并返回一个包含匹配索引的数组
function findall(a,x){
var results=[],
len=a.length,
pos=0;
while(pos<len){
pos=a.indexOf(x,pos);
if(pos===-1) break;
results.push(pos);
pos++;
}
return results;
}
findall(a,1)
4.map()将调用的数组的每个元素传递给指定的函数,并返回一个新数组,它包含函数的返回值
a=[1,2,3]
b=a.map(function(x){return x*x;}); //b是[1,4,9]
5.forEach()方法,从头至尾遍历数组,为每一个元素调用指定的函数,它可以接收三个参数:数组元素、元素的索引、和数组本身,如果只关心数组元素的值,可以只写一个参数,其它参数可以忽略!
var data=[1,2,3,4,5];
var sum=0;
data.forEach(function(value){sum+=value;}); //只有一个参数,数组元素,累加
data.forEach(function(v,i,a){a[i]=v+1;}); data=[2,3,4,5,6]