- for in: 遍历的是数组的键名,适合遍历对象
const myLifeSummedUp = ['☕', '💻', '🍷', '🍫'];
for (let item in myLifeSummedUp) {
console.log(item); // 0 1 2 3
}
- for of: 遍历的是数组元素值且不包括数组的原型属性method和索引name,适合遍历数组
const myLifeSummedUp = ['☕', '💻', '🍷', '🍫'];
for (let item of myLifeSummedUp) {
console.log(item); // "☕" "💻" "🍷" "🍫"
}
- forEach:遍历数组的时候,break不能中断循环,return不能返回到外层函数
let arr = [1,2,3,4];
arr.forEach((currentValue, index, arr) => {
console.log(currentValue) // 1 2 3 4
})
- map:迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组,不会改变原始数组
let arr = [1,2,3,4];
let arr2 = arr.map(item =>item+1)
console.log(arr2) //[2,3,4,5]
- filter:创建一个包含符合条件的元素的新的数组
let arr = [1, 2, 3, 4];
let arr2 = arr.filter(item => item > 2)
console.log(arr2); // [3, 4]
- some:检测数组中的元素是否满足指定条件。依次执行数组中每个元素,如果有一个元素满足条件,则表达式返回true,剩余的元素不再进行检测。如果没有满足条件的元素,返回false。
let arr = [1, 2, 3, 4];
let arr2 = arr.some(item => item > 3 )
console.log(arr2); // true
- every:检测数组所有元素是否都符合指定条件。依次执行数组中每个元素,如果所有的元素都满足条件,则表达式返回true。如果存在没有满足条件的元素,返回false。
let arr = [1, 2, 3, 4];
let arr2 = arr.every(item => item > 3 )
console.log(arr2); // false
- reduce:接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
// total 必需 初始值或计算结束后的返回值
// currentValue 必需 当前元素
// currentIndex 可选 当前元素的索引
// arr 可选 当前元素所属的数组对象
// initialValue 可选 传递给函数的初始值
// 求数组项之和 传入初始值0,prev初始值为0,cur为1.相加之后的返回值1作为下一轮回调的prev,再继续与下一项相加,直到完成所有数组项的和并返回
var arr = [1, 2, 3, 4]
var sum = arr.reduce(function (prev, cur) {
return prev + cur;
},0);
- find:返回通过函数内判断的数组的第一个元素的值。当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数,如果没有符合条件的元素返回 undefined。
let arr = [1, 2, 3, 4]
let findValue = arr.find((item, index) => {
return item === 1;
});
console.log(findValue); // 1
- findIndex:返回通过函数内判断的数组的第一个元素的位置。数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。如果没有符合条件的元素返回 -1。
let arr = [1, 2, 3, 4]
let findIndex = arr.findIndex((item, index) => {
return item === 1;
});
console.log(findIndex); // 0