Javascript 如何基于密钥数组创建嵌套JSON?
给定输入:Javascript 如何基于密钥数组创建嵌套JSON?,javascript,Javascript,给定输入: let input = [ { schema: ["user", "email"], value: "test@test.com" }, { schema: ["user", "name", "firstName"], value: "John" }, ]; let output = {}; for (let i = 0; i < input.length; i++) { let data = input[i];
let input = [
{
schema: ["user", "email"],
value: "test@test.com"
},
{
schema: ["user", "name", "firstName"],
value: "John"
},
];
let output = {};
for (let i = 0; i < input.length; i++) {
let data = input[i];
for (let j = 0; j < data.schema.length; j++) {
let s = data.schema[j];
// How to set nested levels here ? eg: output["user"]["email"] = {};
}
}
这里“schema”表示数据的JSON嵌套结构
使用Javascript动态设置嵌套属性的方法是什么?您可以使用
reduce
来“深化”输出对象,直到需要设置属性/值的级别:
const-input=[{schema:[“用户”,“电子邮件”],值:test@test.com},{schema:[“user”,“name”,“firstName”],值:“John”},];
常量输出={};
用于(输入的常量对象){
片(0,-1).reduce(
(acc,lvl)=>acc[lvl]| |(acc[lvl]={}),
输出
)[obj.schema.slice(-1)[0]]=obj.value;
}
控制台日志(输出)代码>什么是data.schema
?输出[“用户”][“电子邮件”]={}怎么样代码>不起作用?@Xufox:我不能使用输出[“用户”][“电子邮件”],因为“用户”和“电子邮件”将是动态的。好的,然后用包含动态字符串的变量替换“用户”
和“电子邮件”
。请参阅。它表示为数组,例如:[“user”,“email”],因此我需要循环来设置它。请参考例子,我已经更新了。OP已经改变了问题的主体!谢谢你让我知道。相应地调整了我答案中的输入。工作完美无瑕,谢谢:)
{
"user": {
"email": "test@test.com",
"name": {
"firstName": "John"
}
}
}