JavaScript中reduce与map及find的使用示例
本文介绍JavaScript中reduce、map和find方法在对象数组处理中的具体应用。通过示例演示如何使用reduce进行数值累加求和,利用map根据条件提取特定属性值,以及使用find查找并获取首个匹配元素。内容涵盖参数说明、初始值设置及结果判断逻辑,帮助开发者掌握这些常用数组方法的优雅写法。
reduce
1、利用 reduce 方法可对对象数组按指定 key 值进行求和计算
示例场景如下所示对象数组:
const arr = [
{ name: 'apple', price: 2 },
{ name: 'banana', price: 3 },
{ name: 'orange', price: 4 },
];若需依据 price 属性执行求和操作,可参考如下代码实现:
const sum = arr.reduce((acc, cur) => acc + cur.price, 0);
console.log(sum); // 9

此处 reduce 方法的第一个参数为回调函数,接收累加器(acc)与当前元素(cur)两个参数。该回调函数的返回值将作为下次调用时累加器的值。reduce 方法的第二个参数设定为累加器的初始值,此处指定为 0。
在回调函数内部,执行累加器与当前元素 price 属性的相加操作,从而得出所有元素 price 属性的总和。
map
1、利用 map 方法可从对象数组中依据某一 key 值提取另一个 key 的值。
示例场景如下所示对象数组:
const arr = [
{ name: 'apple', price: 2 },
{ name: 'banana', price: 3 },
{ name: 'orange', price: 4 },
];
若需依据 name 属性获取 price 属性,可参考如下代码实现:
const prices = arr.map(item => item.name === 'banana' ? item.price : null);
console.log(prices); // [null, 3, null]

此处 map 方法的参数为回调函数,接收当前元素(item)一个参数。该回调函数的返回值将构成新数组的元素。在回调函数中,判断当前元素的 name 属性是否等于 'banana',若是则返回当前元素的 price 属性,否则返回 null。最终生成一个新数组,其中仅 name 属性为 'banana' 的元素其 price 属性有值,其余元素的 price 属性均为 null。
2、利用 map 方法获取对象数组中依据某一 key 值得到的元素的 price 属性,亦可使用 find 方法来实现。
示例场景如下所示对象数组:
const arr = [
{ name: 'apple', price: 2 },
{ name: 'banana', price: 3 },
{ name: 'orange', price: 4 },
];若需依据 name 属性获取 price 属性,可参考如下代码实现:
const banana = arr.find(item => item.name === 'banana');
if (banana) {
console.log(banana.price); // 3
}
此处 find 方法的参数为回调函数,接收当前元素(item)一个参数。该回调函数需返回布尔值,以指示当前元素是否符合条件。find 方法将返回符合条件的第一个元素,若未找到符合条件的元素,则返回 undefined。
在回调函数中,判断当前元素是否为 banana,若是则返回当前元素。最终得到一个对象,其中仅 name 属性为 'banana' 的元素其 price 属性有值,其余元素 price 属性为 undefined。可通过 if 语句判断是否找到符合条件的元素,若找到,则输出其 price 属性。
至此,关于 JS 中 reduce 和 map 的优雅写法分享介绍完毕,更多相关 JS reduce map 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
JavaScript闭包与类(Class)的区别及适用场景对比
2026-11-05 15:48:57
JavaScript入门要学ES6吗?let与箭头函数等新特性解析
2026-11-05 14:49:16
JavaScript 8种数据类型详解:基本类型与引用类型的区别
2026-11-05 14:25:15
怎么在JavaScript中使用async/await优化Ajax异步流程
2026-11-05 13:56:15
JavaScript replace回调函数实现动态正则替换逻辑
2026-11-05 13:52:13
相关标签:
