我有一个具有两个属性的对象:x
和y
,类型分别为String和number。
在Express.js应用程序中,使用Plotly将相应的(x,y)值用于绘制时间序列,x
采用2013-10-04T22:23
格式。
现在假设我有一个具有重复x
值的对象,我需要移除重复项,只为该x
值保留一个条目,并将相应的y
值求和,同样只保留一个相应的y
值。
例如:
var data = [
{
x: ["2013-10-04 22:22", "2013-10-04 22:22", "2013-10-04 22:22",
"2013-12-12 15:15"],
y: [1, 1, 1, 6]
}
];
我要将2013-10-04 22:22
x
值的y
值求和,只保留一个x
值y
值对,如下所示:
data = [
{
x: ["2013-10-04 22:22",
"2013-12-12 15:15"],
y: [3, 6]
}
];
一个人该怎么做呢?
您可以创建一个接收对象的函数,并以您想要的方式操作该对象:
const obj = {
x: ["2013-10-04 22:22", "2013-10-04 22:22", "2013-10-04 22:22", "2013-12-12 15:15"],
y: [1, 1, 1, 6]
}
function removeObjDuplicates ({ x, y }) {
const occurrences = {};
for (let i = 0; i < x.length; i++) {
occurrences[x[i]] = (occurrences[x[i]] || 0) + y[i];
}
return {
x: Object.keys(occurrences),
y: Object.values(occurrences),
}
}
removeObjDuplicates(obj)将返回:
{
x: ["2013-10-04 22:22", "2013-12-12 15:15"],
y: [3, 6]
}