1. forEach()
需要从头到尾遍历完数组的每一项,不支持返回值
。
var arr = [{a:1}, {a:1}, {a:1}]
arr.forEach((val, index, arr) => {
val.b = 2
})
console.log(arr) // [{a: 1, b: 2},{a: 1, b: 2},{a: 1, b: 2}]
forEach到底可以改变原数组吗?
2. map()
在forEach()的基础上,支持返回值,返回一个新的数组
。
var arr = [{a:1}, {a:1}, {a:1}]
var newArr = arr.map((val, index, arr) => {
return val = 2
})
console.log(arr) // [{a:1}, {a:1}, {a:1}]
console.log(newArr) // [2, 2, 2]
3. some()
some方法遍历数组,数组中只需要有一项满足条件,就立即停止遍历,并返回true
,如果遍历完数组都没有符合条件的项,则返回false。
var a = [1,2,3,4]
var flag = a.some(item => {
return item % 2 === 0
})
console.log(flag) // true
4. every()
every() 方法用于检测数组所有元素是否都满足条件,有一项不满足就立即停止遍历并返回false。每一项都满足条件,才返回 true
。
var arr = [1, 2, 3];
arr.every((item, index, arr) => {
// item为数组中的元素,index为下标,arr为目标数组
return item > 0; // true
return index == 0; // false
})
5. find()
find方法遍历数组,当数组中有一项满足条件,就立即停止遍历,并返回这一项
;如果遍历完数组都没有符合条件的项,则返回undefined。
var a = [1,2,3,4,2]
var flag = a.find(item => {
return item === 2
})
console.log(flag) // 2
6. filter()
从头到尾遍历完数组,将所有符合条件的元素形成一个新数组返回
。
var arr = [1, 2, 3]
var newArr = arr.filter(item => { // item为数组当前的元素
return item > 1
})
console.log(arr) // [1, 2, 3]
console.log(newArr) // [2, 3]
7. for...of...
从头到尾遍历完数组,作用与forEach()一样。
for...in...
遍历的是下标,且遍历到的下标是字符串,不适合遍历数组,一般用来遍历对象。
var arr = [1, 2, 3]
for(var val of arr){
console.log(val) // 1 2 3
}
console.log(arr)
for(var index in arr){
console.log(index, typeof index) // 0,1,2 string
}
8. from()
Array.from( arrayLike[, mapFn[, thisArg]] )
- arrayLike
想要转换成数组的伪数组对象或可迭代对象。 - mapFn 可选
如果指定了该参数,新数组中的每个元素会执行该回调函数。 - thisArg 可选
可选参数,执行回调函数 mapFn 时 this 对象