gpt4 book ai didi

javascript - 如何根据条件对对象数组中的属性求和

转载 作者:行者123 更新时间:2023-11-30 20:18:31 24 4
gpt4 key购买 nike

我是一名初级 Web 开发人员,正在寻找解决问题的指导。如果我遗漏了任何完整的内容,请原谅,因为这是我第一次在这里发帖。

我有一个像这样返回的一些数据数组:

[
{x: Date(1234), y: 0}
{x: Date(1235), y: 0}
{x: Date(1236), y: 300}
{x: Date(1237), y: 300}
{x: Date(1238), y: 300}
{x: Date(1239), y: 300}
{x: Date(1240), y: 300}
{x: Date(1241), y: 0}
{x: Date(1242), y: 0}
{x: Date(1243), y: 0}
]

如果可能,我想返回一个新数组,其中所有连续的“y”值 > 0 相加。在新数组中,求和值应与求和项的第一个“x”值相关联,如下所示:

[
{x: Date(1234), y: 0}
{x: Date(1235), y: 0}
{x: Date(1236), y: 1500}
{x: Date(1241), y: 0}
{x: Date(1242), y: 0}
{x: Date(1243), y: 0}
]

我认为这可能涉及“减少”,但我不确定如何进行。任何帮助将不胜感激。

提前致谢!

最佳答案

使用 reduce,你可以做这样的事情:https://jsbin.com/leladakiza/edit?js,console

var input = [
{x: Date(1234), y: 0},
{x: Date(1235), y: 0},
{x: Date(1236), y: 300},
{x: Date(1237), y: 300},
{x: Date(1238), y: 300},
{x: Date(1239), y: 300},
{x: Date(1240), y: 300},
{x: Date(1241), y: 0},
{x: Date(1242), y: 0},
{x: Date(1243), y: 0},
];

var output = input.reduce(function (acc, val) {
var lastIndex = acc.length - 1;
if (val.y <= 0 || lastIndex < 0 || acc[lastIndex].y <= 0) {
acc.push(val);
} else {
acc[lastIndex].y += val.y;
}
return acc;
}, []);

关于javascript - 如何根据条件对对象数组中的属性求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691428/

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