JavaScript 如何从对象数组中获取最高商品价格
提取商品数组最高价格的实现方案
适配对象数组的Math.max()用法
Math.max()本身只接收独立的数字参数,处理对象数组时需要先把所有商品的price值提取成纯数字列表,再传入计算:
const maxPrice = Math.max(...items.map(item => item.price));
常见踩坑:如果直接把提取到的价格数组整体传给
Math.max(),会返回NaN。必须通过扩展运算符...把数组拆成独立参数,或是用apply方法传递数组参数,等价写法如下:
const maxPrice = Math.max.apply(null, items.map(item => item.price));
以上写法在示例数组中会返回最高价格299.99。
reduce()遍历累计实现
利用reduce()逐元素遍历、保留累计值的特性,不需要提前拆分全量数组:
const maxPrice = items.reduce((prevMax, currentItem) => { // 对比当前累计最大值与当前商品价格,保留更大值作为下一轮的累计值 return Math.max(prevMax, currentItem.price); }, 0);
注意:常规商品价格为非负值,初始值设为0无问题;若存在负价格的特殊业务场景,需将初始值替换为数组第一个元素的价格,避免初始值覆盖真实最大值。
原生for循环实现
不依赖数组高阶方法的基础实现,逻辑更直观:
let maxPrice = 0; for (let i = 0; i < items.length; i++) { if (items[i].price > maxPrice) { maxPrice = items[i].price; } }
内容的提问来源于stack exchange,提问作者JackXN
相关产品推荐
相关产品推荐

