【发布时间】:2020-04-19 00:24:21
【问题描述】:
我有一个以下格式的数组,其中包含 x 和 y 值以及一个数据字段,我希望将其转换为一个数组,该数组将特定数据上的所有单个值相加,然后显示一个累积值(求和超过该日期,然后将该值添加到以前的日期)。例如。
data_array = [
{xvalue: 10, yvalue: 5, date: "12/2"},
{xvalue: 10, yvalue: 5, date: "12/2"},
{xvalue: 8, yvalue: 3, date: "12/3"},
{xvalue: 10, yvalue: 5, date: "12/3"},
{xvalue: 6, yvalue: 1, date: "12/4"},
{xvalue: 20, yvalue: 3, date: "12/4"},
]
新数组
new_data = [
{xvalue: 20, yvalue: 10, date: "12/2"}
{xvalue: 38, yvalue: 18, date: "12/3"}
{xvalue: 64, yvalue: 22, date: "12/4"}
]
有什么方法可以有效地做到这一点?目前我有以下可行的方式,但感觉它不是最好的实现
var temp = {}
var obj = null
for (var i=0; i<data_array.length; i++){
obj = data_array[i];
if (!temp[obj.date]) {
temp[obj.date]=obj;
}
else {
temp[obj.date].xvalue += obj.xvalue;
temp[obj.date].yvalue += obj.yvalue
}
}
var result = [];
for (var prop in temp){
result.push(temp[prop]);
}
console.log("result", result)
for (var i=0; i< result.length; i++){
if (i!=0){
result[i].xvalue +=result[i-1].xvalue;
result[i].yvalue +=result[i-1].yvalue;
}
}
【问题讨论】:
-
使用
Array.prototype.reduce函数 -
你能告诉我们你尝试了什么吗?
-
大家好 - 我更新了我的实现,但如果有更好的方法,我希望得到一些反馈
标签: javascript arrays sorting multidimensional-array javascript-objects