跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

JavaScript 数组方法,底层原理,部分

本篇延续 JavaScript 数组方法系列文章,继续探讨常用数组方法的底层实现原理。如果您是第一次阅读本系列,建议先阅读第一部分。本文将通过
for
循环模拟实现
Math.max()
、
Math.min()
、
.reverse()
、
.filter()
和
.reduce()
方法,帮助您更深入地理解这些方法的工作机制。
Math.min()
和
Math.max()
这两个方法分别用于返回一组数字中的最小值和最大值。它们既可以接收单个数字作为参数,也可以通过扩展运算符 (
...
) 处理数组。以下是一些示例:
// 查找数组中的最小值: // 使用 for 循环: function findMinValueInArray(array) { let min = array[0]; for (let i = 1; i < array.length; i++) { if (array[i] < min) { min = array[i]; } } return min; } findMinValueInArray([33, -5544, 66, 55]); // 返回:-5544 // 使用 Math.min(): function findMinValueInArray(array) { return Math.min(...array); } findMinValueInArray([33, -5544, 66, 55]); // 返回:-5544 // 查找数组中的最大值: // 使用 for 循环: function findMaxValueInArray(array) { let max = array[0]; for (let i = 1; i < array.length; i++) { if (array[i] > max) { max = array[i]; } } return max; } findMaxValueInArray([33, -5544, 66, 55]); // 返回:66 // 使用 Math.max(): function findMaxValueInArray(array) { return Math.max(...array); } findMaxValueInArray([33, -5544, 66, 55]); // 返回:66
正如您所见,
Math.min()
和
Math.max()
方法显著简化了代码,降低了出错的概率。 `.reverse()` 此方法用于反转数组元素的顺序。需要注意的是,
.reverse()
方法会直接修改原始数组。 立即学习 “ Java免费学习笔记(深入) ”;
// 反转数组元素的顺序 // 使用 for 循环: function reverseArray(array) { let reversedArray = []; for (let i = array.length - 1; i >= 0; i--) { reversedArray.push(array[i]); } return reversedArray; } reverseArray([1, 2, 3, 4, 5]); // 返回:[5, 4, 3, 2, 1] // 使用 .reverse(): function reverseArray(array) { return array.reverse(); } reverseArray([1, 2, 3, 4, 5]); // 返回:[5, 4, 3, 2, 1]
同样,数组方法的效率更高,代码更简洁,出错的可能性更小。 `.filter()`
.filter()
方法用于返回数组中满足指定条件的元素组成的新的数组。 假设我们有一组银行账户,每个账户都有一个
balance
属性,我们需要返回余额为零的账户。
// 使用 for 循环: function getClientsWithNoMoney(array) { let accountsWithZeroBalance = []; for (let account of array) { if (account.balance === 0) { accountsWithZeroBalance.push(account); } } return accountsWithZeroBalance; } // 使用 .filter(): function getClientsWithNoMoney(array) { return array.filter((account) => account.balance === 0); }
使用
.filter()
方法使代码更简洁易读,并且减少了错误的可能性。 `.reduce()`
.reduce()
方法对数组的每个元素执行一个回调函数,并将结果累积到一个最终值。 一个简单的例子是使用
.reduce()
计算数组所有元素的和。我们还可以用它来计算一组数字的平均值:
// 使用 for 循环: function getAverage(array) { let sum = 0; for (let i = 0; i < array.length; i++) { sum += array[i]; } return sum / array.length; } getAverage([10, 20, 30, 40]); // 返回:25 // 使用 .reduce(): function getAverage(array) { return array.reduce((cv, acc) => cv + acc, 0) / array.length; } getAverage([10, 20, 30, 40]); // 返回:25
虽然在这个例子中,
.reduce()
并不会节省很多代码,但它仍然降低了出错的概率。 本文通过几个例子展示了如何使用
for
循环模拟一些常用的 JavaScript 数组方法。JavaScript 数组方法种类繁多,本文仅涵盖部分常用方法。如果您希望了解其他数组方法的实现原理,请在评论区留言。 欢迎提出您的宝贵意见和建议,并分享本文给需要的朋友。 如果您想阅读第一部分,请访问 此处 。 感谢您的阅读! 最初发表于 2023 年 2 月 13 日

相关文章