gpt4 book ai didi

javascript - 使用值数组创建对象数组

转载 作者:数据小太阳 更新时间:2023-10-29 05:59:44 26 4
gpt4 key购买 nike

我有相当多的这种形式的数据

A B C D
-------
1 2 3 4
5 6 7 8
9 1 2 3

使用 javascript 类型表示为:

df = {A: [1,5,9], B: [2,6,1], C: [3,7,2], D:[4,8,3]}

我想把它转换成这种形式:

[{A:1, B:2, C:3, D:4}, {A:5, B:6, C:7, D:8}, {A:9, B:1, C:2, D:3}]

我尝试将其实现为:

keyes = ["A", "B", "C", "D"]
getrow = (i) => Object.assign( ...keyes.map((k) => ({[k]: df[k][i]})))
df.A.map( (x,j) => getrow(j))

但是对于我的表的大小来说这很慢。有没有更快的方法来做到这一点?

最佳答案

您可以使用 reduceforEach 循环来创建对象数组。

const df = {
A: [1, 5, 9],
B: [2, 6, 1],
C: [3, 7, 2],
D: [4, 8, 3]
}

const result = Object.keys(df).reduce((r, k) => {
df[k].forEach((e, i) => {
if (!r[i]) r[i] = {}
r[i][k] = e;
})
return r;
}, [])

console.log(result)

或者为了获得更好的性能,您可以使用 for 循环。

const df = {
A: [1, 5, 9],
B: [2, 6, 1],
C: [3, 7, 2],
D: [4, 8, 3]
}

const result = [];

for (let key in df) {
for (let i = 0; i < df[key].length; i++) {
if (!result[i]) result[i] = {}
result[i][key] = df[key][i]
}
}

console.log(result)

关于javascript - 使用值数组创建对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com