首页 > 解决方案 > 在javascript中展平json数组

问题描述

我开始使用 javascript。努力展平一个 javascript 对象。

[
   {
      "timestamp":"2019-01-01T00:00:00.000Z",
      "result":[
         {
            "MarketShare":89905.0,
            "Territory":"PHILADELPHIA PA"
         },
         {
            "MarketShare":82991.0,
            "Territory":"SEATTLE WA"
         },

      ]
   },
   {
      "timestamp":"2019-02-01T00:00:00.000Z",
      "result":[
         {
            "MarketShare":73662.0,
            "Territory":"PHILADELPHIA PA"
         },
         {
            "MarketShare":67059.0,
            "Territory":"SEATTLE WA"
         }
      ]
   },
   {
      "timestamp":"2019-03-01T00:00:00.000Z",
      "result":[
         {
            "MarketShare":72898.0,
            "Territory":"PHILADELPHIA PA"
         },
         {
            "MarketShare":68013.0,
            "Territory":"SEATTLE WA"
         }
      ]
   },
   {
      "timestamp":"2019-04-01T00:00:00.000Z",
      "result":[
         {
            "MarketShare":74607.0,
            "Territory":"PHILADELPHIA PA"
         },
         {
            "MarketShare":66769.0,
            "Territory":"SEATTLE WA"
         }
      ]
   },
   {
      "timestamp":"2019-05-01T00:00:00.000Z",
      "result":[
         {
            "MarketShare":93932.0,
            "Territory":"PHILADELPHIA PA"
         },
         {
            "MarketShare":86514.0,
            "Territory":"SEATTLE WA"
         }
      ]
   }
]

预期的输出格式是:

[
{"timestamp":"2019-01-01T00:00:00.000Z","MarketShare":89905.0,"Territory":"PHILADELPHIA PA"},
{"timestamp":"2019-01-01T00:00:00.000Z","MarketShare":82991.0,"Territory":"SEATTLE WA"},
{"timestamp":"2019-02-01T00:00:00.000Z","MarketShare":73662.0,"Territory":"PHILADELPHIA PA"},
{"timestamp":"2019-02-01T00:00:00.000Z","MarketShare":67059.0,"Territory":"SEATTLE WA"},
{"timestamp":"2019-03-01T00:00:00.000Z","MarketShare":72898.0,"Territory":"PHILADELPHIA PA"},
{"timestamp":"2019-03-01T00:00:00.000Z","MarketShare":68013.0,"Territory":"SEATTLE WA"},
{"timestamp":"2019-04-01T00:00:00.000Z","MarketShare":74607.0,"Territory":"PHILADELPHIA PA"},
{"timestamp":"2019-04-01T00:00:00.000Z","MarketShare":66769.0,"Territory":"SEATTLE WA"},
{"timestamp":"2019-05-01T00:00:00.000Z","MarketShare":93932.0,"Territory":"PHILADELPHIA PA"},
{"timestamp":"2019-05-01T00:00:00.000Z","MarketShare":86514.0,"Territory":"SEATTLE WA"}
]

尝试构建一个通用函数,该函数可以展平结果数组中存在的任意数量的键值对。关于如何在 javascripts 中操作 json 对象的简单解释将非常有帮助

标签: javascriptarraysfiltering

解决方案


您可以尝试(假设 yourArray 包含您的数组):

let out = [];

for( obj of yourArray  ) {
  for( res of obj.result ) {
    out.push({ ...res, timestamp:obj.timestamp })
  }
}

console.log(out);

推荐阅读