gpt4 book ai didi

javascript - 动态创建具有未知键的嵌套 JavaScript 对象

转载 作者:行者123 更新时间:2023-12-02 07:57:35 25 4
gpt4 key购买 nike

假设我有两个数组,它们在 REST 调用的响应中返回。为了简化,我在以下示例代码中将它们硬编码为 keyssubKeys

我想从这些数组中创建一个嵌套对象,当输出为 JSON 字符串时,它看起来像这样:

目标 JSON

{
"key1": {
"subKey1": "someValue"
},
"key2": {
"subKey2": "someValue"
},
"key3": {
"subKey3": "someValue"
}
}

代码示例

var keys = ["key1", "key2", "key3"];  // These come from a REST response
var subKeys = ["subKey1", "subKey2", "subKey3"]; // These come from a REST response

var targetObj = {}
for (const key in keys) {
targetObj[key] = {}
for (const subKey in subKeys) {
targetObj[key][subKey] = "someValue";
}
}
console.log(JSON.stringify(targetObj, null, 2));

虽然这在我的应用程序中给出了正确的行为,但我的印象是可能有更简单的方法来实现相同的结果,无论是在“vanilla”JavaScript 还是 ES6 中?令我困扰的是,我在每次运行 for 循环时都定义了一个空对象。

最佳答案

您的代码不会产生您所说的示例输出。它会将所有 3 个子项放在每个键下,而不是每个键一个。此外,您最终得到的是数字键,而不是键名。

var keys = ["key1", "key2", "key3"];  // These come from a REST response
var subKeys = ["subKey1", "subKey2", "subKey3"]; // These come from a REST response

var targetObj = {}
for (let i=0; i<keys.length; i++) {
const key = keys[i];
targetObj[key] = { [subKeys[i]]: "someValue" };
}
console.log(JSON.stringify(targetObj, null, 2));

首先,您在 for 循环中使用了“in”而不是“of”,其次,您没有使用相同的索引来查找子键。

为避免创建空对象,您可以使用以下语法:

{ [variable]: "value" }

这将创建以变量值作为键、以字符串作为值的对象。将变量名放在方括号中告诉它使用变量值而不是变量名。说 { variable: "value"} 是行不通的,因为键是“可变的”而不是 variable 的值。

关于javascript - 动态创建具有未知键的嵌套 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61576958/

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