forEach():不支持return,声明式(不关心如何实现)
let arr = [1,2,3,4,5]; arr.forEach(function (item) { console.log(item); })
forIn():key 会变成字符串类型,包括数组的私有属性
let arr = [1,2,3,4,5]; for(let key in arr) { console.log(key); }
forOf():支持return,break,continue,并且是值 of 数组(不能遍历对象)
let arr = [1,2,3,4,5]; for(let val of arr) { console.log(val); }
filter():过滤 不操作元数组 返回结果:返回过滤后的新数组 回调函数的返回结果:true 放到新数组 否则不返回结果
let newAry = [1,2,3,4,5,6,7].filter(function(item){ return item > 4; }) console.log(newAry);
map():映射 不操作原数组 返回心得数组 回调函数:返回什么就是什么
let arr1 = [1,2,3].map(function(item){ // return item * 2; return `<i>${item}</i>`;// `` 是es6中的模版字符串 遇到变量用 ${} 取值 }); console.log(arr1.join(","));
include(): 返回的是布尔类型
let arr2 =[1,2,3,4,55,555];
console.log(arr2.includes(5));
find(): 返回找到的那一项 不会改变原数组 回调函数返回true表示找到了 便停止循环 找不到返回 undefined
let arr3 = [1,2,3,4,5];
let result = arr3.find(function(item,index){ return item.toString().indexOf(5)>-1; }) console.log(result);
some(): 找true 找到true后停止 返回true 找不到返回false
let arr3 = [1,2,3,4,5]; let result1 = arr3.some(function (item,index) { return item.toString().indexOf(5)>-1; }); console.log(result1);
every(): 找false 找到false后停止 返回false
let arr3 = [1,2,3,4,5]; let result2 = arr3.every(function (item,index) { return item.toString().indexOf(5)>-1; }); console.log(result2);
reduce(): 收敛函数 有4个参数 返回的是叠加后的结果 原数组不发生变化 回调函数返回的结果
prev,代表是数组的第一项,next,代表是数组的第二项
第二次 prev代表是undefined,next,代表是数组的第三项
[1,2,3,4,5].reduce(function(prev,next,index,item){ // console.log(arguments); console.log(prev,next); return 100; // 本次的返回值 会作为下一次的上一个 })