删除JavaScript对象数组中的重复项并对条目求和

删除JavaScript对象数组中的重复项并对条目求和,javascript,node.js,express,plotly,Javascript,Node.js,Express,Plotly,我有一个对象,它有两个属性:x和y,分别是String和number类型 相应的(x,y)值用于在Express.js应用程序中使用Plotly绘制时间序列,x采用格式2013-10-04T22:23 现在,假设我有一个具有重复x值的对象,我需要删除重复项,只为该x值留下一个条目,并将相应的y值相加,再次只留下一个相应的y值 例如: var data = [ { x: ["2013-10-04 22:22",

我有一个对象,它有两个属性:
x
y
,分别是String和number类型

相应的(x,y)值用于在Express.js应用程序中使用Plotly绘制时间序列,
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),
  }
}

您可以创建一个函数来接收对象,并按照您想要的方式操纵对象:

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),
  }
}

谢谢,这就是我要找的。谢谢,这就是我要找的。