js数组forEach map filter方法

来源:互联网 发布:mfc网络编程实例 编辑:程序博客网 时间:2024/05/04 16:59
forEach方法中的function回调支持三个参数,第一个是遍历的数组内容,第二个是对应的数组索引,第三个是数组本身

[].forEach(function(value,index,array){
    //...
});

对比jQuery的$.each()方法:
$.each([],function(index,value,array){
    //...
});
注意:第一个参数和第二个参数是相反的

例子:
[1,2,3,4].forEach(console.log);
输出:1,0,[1,2,3,4]
      2,1,[1,2,3,4]
      3,2,[1,2,3,4]
      4,3,[1,2,3,4]

map方法,表示映射数组
[].map(function(value,index,array){
    //...
});

例子:
var data = [1,2,3,4];
var arrayOfSquares = data.map(function(item){
    return item*item;
});
alert(arrayOfSquares);
//输出1,4,9,16

注意:callback需要有return值,如果没有,将会映射成undefined

利用map方法获取对象数组中的特定属性值,例子:
var users = [
    {"name":"aa","email":"aa@email.com"},
    {"name":"bb","email":"bb@email.com"},
    {"name":"cc","email":"cc@email.com"},
]
var emails = users.map(function(user){
    return user.email;
});
console.log(emails.join(","));
输出aa@email.com,bb@email.com,cc@email.com

filter方法筛选数组
用法和map相似,callback函数需要返回布尔值
var data = [0,1,2,3];
var arrayFilter = data.filter(function(item){
    return item;
});
console.log(arrayFilter);
输出[1,2,3]
解释:因为0为false,所以被筛选了

可以将map和filter结合使用,例子:
var emailsZhang = users
    .map(function(user){ return user.email; })
    .filter(function(email){ return /^zhang/.test(email); });
console.log(emailsZhang.join(","));
//zhang@email.com
0 0
原创粉丝点击