gpt4 book ai didi

Javascript 减少对象数组中的某些对象

转载 作者:行者123 更新时间:2023-11-29 17:45:54 25 4
gpt4 key购买 nike

我在计算对象值数组时遇到了一个小问题...我下面的代码工作得很好,但是如果我只想定位 reduce 函数中的某些对象怎么办?

基本上,类似于 SQL WHERE 函数,所以

newcost = Number((cart.map(item => (item.cost * item.amm)).reduce((prev, next) => Number(prev) + Number(next))).toFixed(2));

会是

newcost = Number((cart.map(item => (item.cost * item.amm)).reduce((prev, next) => Number(prev) + Number(next))).toFixed(2)) WHERE item.type === "c";

你知道,类似的东西。我怎样才能实现这样的目标?

谢谢。

最佳答案

下面是如何使用 filter() 来实现的。 filter() 返回一个数组,其中传递给它的函数返回 true。这具有仅重新调整类型为“c”的项目的效果。

var cart = [
{type:'c', cost:20.00, amm: 10},
{type:'d', cost:20.00, amm: 1},
{type:'d', cost:20.00, amm: 2},
{type:'c', cost:1.00, amm: 5},
{type:'a', cost:20.00, amm: 7},

]
let newcost = cart.filter(i => i.type === 'c') // only c type items
.map(item => item.cost * item.amm)
.reduce((prev, next) => prev + next)
.toFixed(2);

console.log(newcost)

此外,您没有询问,但是 map() 调用是无关紧要的 — 您并不真正需要它,它会导致额外的数据循环(您也可以只执行在 reduce() 中测试并省略 filter() 尽管这可能会开始影响可读性):

var cart = [
{type:'c', cost:20.00, amm: 10},
{type:'d', cost:20.00, amm: 1},
{type:'d', cost:20.00, amm: 2},
{type:'c', cost:1.00, amm: 5},
{type:'a', cost:20.00, amm: 7},

]
let newcost = cart.filter(i => i.type === 'c')
.reduce((prev, next) => prev + next.cost * next.amm, 0)
.toFixed(2);

console.log(newcost)

关于Javascript 减少对象数组中的某些对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com