根据javascript数组中的日期合并对象

时间:2016-08-14 21:19:07

标签: javascript arrays date ecmascript-6

我有一个对象

{
  YHOO: [
    {
      date: Fri Apr 12 1996 00:00:00 GMT-0400 (EDT),
      open: 25.25,
      high: 43,
      low: 24.5,
      close: 33,
      volume: 408720000,
      adjClose: 1.38,
      symbol: 'YHOO'
    },
    ...
    {
      date: Thu Nov 14 2013 00:00:00 GMT-0500 (EST),
      open: 35.07,
      high: 35.89,
      low: 34.76,
      close: 35.69,
      volume: 21368600,
      adjClose: 35.69,
      symbol: 'YHOO'
    }
  ],
  GOOGL: [
    {
      date: Thu Aug 19 2004 00:00:00 GMT-0400 (EDT),
      open: 100,
      high: 104.06,
      low: 95.96,
      close: 100.34,
      volume: 22351900,
      adjClose: 100.34,
      symbol: 'GOOGL'
    },
    ...
    {
      date: Thu Nov 14 2013 00:00:00 GMT-0500 (EST),
      open: 1033.92,
      high: 1039.75,
      low: 1030.35,
      close: 1035.23,
      volume: 1166700,
      adjClose: 1035.23,
      symbol: 'GOOGL'
    }
  ],
  ...
}

如何更改此对象,使其成为带

的数组
[
  {
    date: Fri Apr 12 1996 00:00:00 GMT-0400 (EDT),
    YHOO: 33,
    GOOG: 100.34
  },
  ...
]

我知道它可能会成为一个问题,他们可能没有相同的日期,所以我想我应该说其中一家公司有正确的日期,然后将其他公司合并到这些日期并省略那些日期不在已经选定的公司。

我想我应该做点像

var data = [];
obj.YHOO.forEach((quote) => {
  data.push({
    date: quote.date,
    YHOO: quote.price,
    GOOG: ?
  });
});

而不是问号,我可以遍历array.GOOG中的所有对象,并检查日期是否与quote.date匹配。

最大的问题是,这看起来很重,公司名称可能会有所不同,所以我不能保证YHOOGOOG存在。

0 个答案:

没有答案