这里还是推荐一篇不错的文章:如何在 JS 代码中消灭 for 循环
ES6中数组的API有:
forEach(callback) 、
map(callback) 、
includes(string) 、indexOf(string) 【ES5】、ES6中Array.includes()函数的用法
filter(callback) 、filter() es6 方法总结
some(callback) 、every(callback) ...ES6 数组some()和every()使用
以及可用于对象(数组)合并,去重的Set对象 Set 对象
说下forEach与map的共同之处:都是遍历数组的API、都不会改变原数组
forEach与map的区别:
forEach无返回值如:
var arr = [1,2,3];
arr.forEach(item=>{
return item === 2
})
//结果为:undefined
map有返回值,返回运算结果的一个数组,如:
var arr = [1,2,3];
arr.map(item=>{
return item === 2
})
//结果为:[false, true, false]
这里顺道讲下如何拷贝一个数组,而不是拷贝数组的地址:
var arr = [1,2,3], arr1 = [];
arr1 = [...arr];//这里使用ES6中对象扩展符进行操作
console.log(arr1);//结果为:[1,2,3]
arr1[1] = 6;
console.log(arr);//结果仍为:[1,2,3]
console.lo(arr1);//结果仍为:[1,6,3]
filter的使用:
// 取出数组中大于3且小于8的数的数组集合
let arr = [1,2,3,45,6,8,8,4,6,969,52,2,3,2,5,4,1,3,6,2];
var result = arr.filter(n=> {return n>3 && n<8});
或 var result = arr.filter(n=> n>3 && n<8);
注意: 在使用箭头函数时,如果去掉参数括号,而函数体未去掉大括号,内部需要return
如果函数体的大括号去掉,则不需要return
filter的函数体中return的是条件为true的布尔结果,而filter最终会把所有符合条件的项重新导出成一个数组
Array.from()的使用:
// 输出参数(以数组方式)
let printArgsArr = function(a, b, c){
let argsArr = Array.from(arguments);
console.log(argsArr)
};
printArgsArr(1,2,3) // 结果: [1,2,3]
Array.from()是ES6的语法,用于将类数组转成数组,相关博客:ES6之Array.from()方法