JS - 遍历数组

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]] )

  1. arrayLike
    想要转换成数组的伪数组对象或可迭代对象。
  2. mapFn 可选
    如果指定了该参数,新数组中的每个元素会执行该回调函数。
  3. thisArg 可选
    可选参数,执行回调函数 mapFn 时 this 对象

你可能感兴趣的:(JS - 遍历数组)