返回
手把手教你玩转 Array.filter、some、every 和 reduce 四大函数,助你成为 JavaScript 编程高手
前端
2023-09-01 15:14:56
前言
JavaScript 中的数组是一个非常强大的数据结构,它可以存储各种类型的值,并且提供了许多有用的方法来操作数组数据。其中,Array.filter、Array.some、Array.every 和 Array.reduce 这四大函数是 JavaScript 中非常重要的高阶函数,它们可以帮助你轻松地处理数组数据,让你的代码更加简洁高效。
一、Array.filter 参数说明 手写实现
1. 参数说明
参数 | 类型 | 必填 | 默认值 | |
---|---|---|---|---|
array | Array | 是 | - | 要过滤的数组 |
callback | Function | 是 | - | 过滤函数,该函数接受三个参数:当前元素、当前元素的索引和数组本身 |
2. 手写实现
Array.prototype.filter = function(callback) {
const result = [];
for (let i = 0; i < this.length; i++) {
if (callback(this[i], i, this)) {
result.push(this[i]);
}
}
return result;
};
二、Array.some 参数说明 手写实现
1. 参数说明
参数 | 类型 | 必填 | 默认值 | |
---|---|---|---|---|
array | Array | 是 | - | 要测试的数组 |
callback | Function | 是 | - | 测试函数,该函数接受三个参数:当前元素、当前元素的索引和数组本身 |
2. 手写实现
Array.prototype.some = function(callback) {
for (let i = 0; i < this.length; i++) {
if (callback(this[i], i, this)) {
return true;
}
}
return false;
};
三、Array.every 参数说明 手写实现
1. 参数说明
参数 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
array | Array | 是 | - | 要测试的数组 |
callback | Function | 是 | - | 测试函数,该函数接受三个参数:当前元素、当前元素的索引和数组本身 |
2. 手写实现
Array.prototype.every = function(callback) {
for (let i = 0; i < this.length; i++) {
if (!callback(this[i], i, this)) {
return false;
}
}
return true;
};
四、Array.reduce 参数说明 手写实现
1. 参数说明
参数 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
array | Array | 是 | - | 要累积的数组 |
callback | Function | 是 | - | 累积函数,该函数接受四个参数:累积值、当前元素、当前元素的索引和数组本身 |
initialValue | any | 否 | undefined | 初始值 |
2. 手写实现
Array.prototype.reduce = function(callback, initialValue) {
let accumulator = initialValue === undefined ? this[0] : initialValue;
for (let i = initialValue === undefined ? 1 : 0; i < this.length; i++) {
accumulator = callback(accumulator, this[i], i, this);
}
return accumulator;
};
实例演示
下面我们通过几个实例来演示这四大函数的用法。
1. 使用 Array.filter 过滤数组
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 过滤出偶数
const evenNumbers = numbers.filter((number) => number % 2 === 0);
console.log(evenNumbers); // [2, 4, 6, 8, 10]
2. 使用 Array.some 测试数组
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 测试数组中是否包含大于 5 的数字
const hasNumberGreaterThan5 = numbers.some((number) => number > 5);
console.log(hasNumberGreaterThan5); // true
3. 使用 Array.every 测试数组
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 测试数组中的数字是否都大于 0
const allNumbersGreaterThan0 = numbers.every((number) => number > 0);
console.log(allNumbersGreaterThan0); // true
4. 使用 Array.reduce 累积数组
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 计算数组中数字的总和
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 55
结语
以上就是 Array.filter、Array.some、Array.every 和 Array.reduce 这四大函数的详细介绍。这些函数非常强大,可以帮助你轻松地处理数组数据,让你的代码更加简洁高效。希望本文能帮助你更好地理解和使用这些函数。