您的位置:首页 > Web前端 > JavaScript

javascript 数组几个有用的方法-过滤,遍历

2014-07-31 10:17 801 查看
1.过滤方法
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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: