gpt4 book ai didi

javascript - 使用扩展参数创建对象

转载 作者:行者123 更新时间:2023-11-28 17:52:51 26 4
gpt4 key购买 nike

我正在尝试使用嵌套 for 循环创建一个新的对象数组。我正在使用扩展参数调用 Object.assign 方法来创建一个新对象,但我认为问题在于每个项目都有相同的对象键,并且我只得到最后一个的输出循环中的项目。这是代码:

let array1 = ["first", "second", "third", "fourth"];
let array2 = [
[1, "a", "b", "c"],
[2, "d", "e", "f"],
[3, "g", "h", "i"],
[4, "j", "k", "l"],
[5, "m", "n", "o"]
];

let matchedVals = [];
let finalVals = [];

for (let j = 0; j < array1.length; j++) {
for (let i = 0; i < array2.length; i++) {
matchedVals.push({ [array2[i]]: array1[j][i] })
finalVals.push(Object.assign(...matchedVals))
}
}


//End Result Expected
// [
// {
// "first": 1,
// "second": "a",
// "third": "b",
// "forth": "c"
// }, {
// "first": 2,
// "second": "d",
// "third": "e",
// "forth": "f"
// }, {
// "first": 3,
// "second": "g",
// "third": "e",
// "forth": "h"
// }

// ...

// ]

我确信有一些简单的事情,但我对 Object.Assign 还不够熟悉,无法理解我可以做些什么来解决这个问题。

最佳答案

我根本不会在这里使用Object.assign。创建具有单一属性的对象只是为了将它们合并在一起似乎很浪费。为什么不改变单个对象(每个顶级数组元素)?

我会使用 Array#mapArray#reduce 或普通的旧循环:

let array1 = ["first", "second", "third", "fourth"];
let array2 = [
[1, "a", "b", "c"],
[2, "d", "e", "f"],
[3, "g", "h", "i"],
[4, "j", "k", "l"],
[5, "m", "n", "o"]
];


const finalResult = array2.map(
values => values.reduce((obj, val, i) => (obj[array1[i]] = val, obj), {})
);
console.log(finalResult);

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

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