首页 > 解决方案 > 如何从另一个对象数组迭代创建新对象

问题描述

const datax = [
        {
          hrCounts: [96, 62, 50, 68, 93, 109, 91, 66, 83, 116, 85, 101],
          hrInCounts: [95, 76, 85, 99, 105, 123, 78, 60, 96, 100, 109, 80],
          hrInTotal: 1106,
          hrLabels: [26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
          hrTotal: 10020,
          mo: 5,
          time: "Thu Jun 25 18:30:00 UTC 2020",
        },
        {
          hrCounts: [96, 62, 50, 68, 93, 109, 91, 66, 83, 116, 85, 101],
          hrInCounts: [95, 76, 85, 99, 105, 123, 78, 60, 96, 100, 109, 80],
          hrInTotal: 1106,
          hrLabels: [26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
          hrTotal: 10120,
          mo: 5,
          time: "Thu Jun 26 18:30:00 UTC 2020",
        }, {
          hrCounts: [96, 62, 50, 68, 93, 109, 91, 66, 83, 116, 85, 101],
          hrInCounts: [95, 76, 85, 99, 105, 123, 78, 60, 96, 100, 109, 80],
          hrInTotal: 1106,
          hrLabels: [26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
          hrTotal: 1020,
          mo: 5,
          time: "Thu Jun 27 18:30:00 UTC 2020",
        },
        {
          hrCounts: [96, 62, 50, 68, 93, 109, 91, 66, 83, 116, 85, 101],
          hrInCounts: [95, 76, 85, 99, 105, 123, 78, 60, 96, 100, 109, 80],
          hrInTotal: 1106,
          hrLabels: [26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26],
          hrTotal: 10110,
          mo: 5,
          time: "Thu Jun 28 18:30:00 UTC 2020",
        }
]
const newArray = datax.foreach((element, index) => {
        const labels = []
        const counts = []
        const idx = index
        labels[idx] = index
        counts[idx] = element.hrTotal
        return {labels, counts}
      });

试图实现以下目标。我想在对象数组上方迭代并获得具有给定结果的新对象数组,我尝试使用 foreach 并且我收到错误,因为 forach 不是函数。

 newArray = [{
               hrTatal:[1020,10110,10120,10020],
               labels:[0,1,2,3]
              }]

标签: javascriptecmascript-6

解决方案


尝试使用map而不是forEach,例如:

const newArray = datax.map((element, index) => {
        const labels = []
        const counts = []
        const idx = index
        labels[idx] = index
        counts[idx] = element.hrTotal
        return {labels, counts}
      });

原因是因为forEach不返回任何东西 ( undefined)。map返回一个新的修改数组。


推荐阅读