JavaScript中数组方法对比
map与filter
map 方法
- 用途: 对数组中的每个元素应用一个函数,并返回一个新数组,数组中的每个元素都是原数组对应元素经过函数处理后的结果。
- 返回值: 新数组,其中每个元素是调用函数后的结果。
- 不修改原数组: map 不会改变原始数组,而是返回一个新的数组。
let numbers = [1, 2, 3, 4];
let doubled = numbers.map(num => num * 2);
console.log(doubled);
filter 方法
- 用途: 对数组中的每个元素应用一个测试函数,并返回一个新数组,数组中的元素都是通过测试的结果。
- 返回值: 新数组,其中包含通过测试函数的所有元素。
- 不修改原数组: filter 不会改变原始数组,而是返回一个新的数组,包含符合条件的元素。
let numbers = [1, 2, 3, 4];
let even = numbers.filter(num => num % 2 === 0);
console.log(even);
reduce与some
reduce方法
- 用于将数组中的所有元素累积成一个单一的值。
- 适用于执行累加、拼接、计数等需要处理整个数组并得到一个结果的操作。
//求和
let numbers = [1, 2, 3, 4];
let sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 10
some方法
- 用于检查数组中是否至少有一个元素满足给定的测试条件。
- 适用于验证某个条件是否在数组中成立,返回一个布尔值(true 或 false)。
let numbers = [1, 2, 3, 4, 6];
let hasLargeNumber = numbers.some(num => num > 5);
console.log(hasLargeNumber);
every与entries
every方法
- 用于测试数组中所有元素是否都满足指定的条件。
- 如果所有元素都满足条件,则返回 true;否则返回 false。
let numbers = [1, 2, 3, 4];
let allPositive = numbers.every(num => num > 0);
console.log(allPositive);
entries方法
- 返回一个新的数组迭代器对象,该对象包含数组中每个元素的键值对(即索引和值的数组)。
- 用于遍历数组的键值对,通常与 for…of 循环结合使用。
let numbers = [10, 20, 30];
let iterator = numbers.entries();
iterator.forEach(([index, value]) => {
console.log(index, value);
});