如何从另一个对象数组迭代创建新对象


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

尝试使用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返回一个新的修改过的数组。

使用reduce,在id中定义输出数组,并附加所需的属性。

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 res = datax.reduce((acc, x, i) => {
acc[0] = {
hrTotal: [...acc[0].hrTotal, x.hrTotal],
labels: [...acc[0].labels, i]
}
return acc;
}, [{
hrTotal: [],
labels: []
}])
console.log(res)

最新更新