数组遍历的方法

1、entries() 方法返回带有键/值对(不会更改原始数组)

1
2
3
4
5
var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
var f = fruits.entries();
for (x of f) {
console.log(x); // [0, “Banana”],[1, “Orange”],[2, “Apple”],[3, “Mango”]
}

2、every()检查数组中的每个元素是否通过测试(不改变原始数组)

只要找到一个不满足的值的数组元素,every()就会返回 false(并且不检查剩余值)

1
2
3
4
5
6
var ages = [32, 33, 16, 40];

let bool = ages.every((el) => {
return el >= 33;
})
console.log(bool) // false

3、some()检查数组中的任何元素是否通过测试(不改变原始数组)

只要找到一个满足条件的数组元素,some() 返回真(并且不检查剩余值) 否则返回 false

1
2
3
4
5
6
var ages = [32, 33, 16, 40];

let bool = ages.some((el) => {
return el >= 33;
})
console.log(bool) // true

4、filter()使用数组中通过测试的每个元素创建新数组(不会改变原始数组)

1
2
3
4
5
6
7
var ages = [32, 33, 16, 40];

let arr = ages.filter((el) => {
return el >= 18;
})

console.log(arr); // [32, 33, 40]

5、find()返回数组中第一个通过测试的元素的值(不会改变原始数组)

如果找到函数返回 true 值的数组元素,则 find() 返回该数组元素的值(并且不检查剩余值),没有满足条件时返回 undefined

1
2
3
4
5
6
var ages = [3, 10, 18, 20];

let find = ages.find((el) => {
return el >= 18;
})
console.log(find) // 18(返回第一个满足条件的)

6、findIndex()返回数组中通过测试的第一个元素的索引(不会改变原始数组)

如果找到函数返回 true 值的数组元素,则 findIndex() 返回该数组元素的索引(并且不检查剩余值) 否则返回 -1

1
2
3
4
5
6
var ages = [3, 10, 18, 20];

let index = ages.findIndex((el) => {
return el >= 18;
})
console.log(index) // 2(返回第一个满足条件的)

7、forEach()为每个数组元素调用函数(不改变原数组)

运行效率比 map 高

1
2
3
4
5
6
7
8
9
10
11
var fruits = ["apple", "orange", "cherry"];

fruits.forEach((el) => {
console.log(el); // apple,orange,cherry;
});


var a = fruits.forEach((el) => {
return el
});
console.log(a) // undefined (没有返回值)

8、map()为每个数组元素调用函数的结果创建新数组(不可改变原数组)

执行效率不如 map

1
2
3
4
5
6
7
8
9
10
11
var numbers = [4, 9, 16, 25];

numbers.map((el) => {
console.log(el); // 4, 9, 16. 25
})

let arr = numbers.map((el) => {
if(el < 9) el = 19;
return el
})
console.log(arr) // [19, 9, 26, 25]

9、reduce()将数组的值减为单个值(从左到右,不会改变原始数组)

1
2
3
4
5
6
7
var numbers = [1, 2, 3];

let num = numbers.reduce((total, num) => {
return total + num;
}, 0);

consol.log(num) // 6(1+2+3)

10、reduceRight()将数组的值减为单个值(从左到右,不会改变原始数组)

1
2
3
4
5
6
7
var numbers = [1, 2, 3];

let num = numbers.reduce((total, num) => {
return total + num;
}, 0);

consol.log(num) // 6(3+2+1)