gpt4 book ai didi

javascript - 如何根据包含其关键位置的数组数组生成具有嵌套键的对象?

转载 作者:行者123 更新时间:2023-11-30 14:34:08 26 4
gpt4 key购买 nike

我有一个数组,其中包含将对象内的子项描述为字符串的数组。

我无法使用提供的输入生成所需的结果。

let obj = {}

let arr = [
["one", "two", "three", "four"],
["one", "two", "three", "four"],
["one", "two", "three", "four", "five"],
["one", "hi"]
]

console.log(JSON.stringify(obj, null, 4))

期望的输出:

let result = {
one: {
children: {
two : {
children: {
three: {
children: {
four: {
children: {
five: {}
}
}
}
}
}
},
hi: {}
}
}
}

最佳答案

一种选择是将一个 reduce 嵌套在另一个 reduce 中,一个遍历属性数组,一个遍历每个属性。

不过,您必须确保根据属性数组的长度检查属性的索引,因为您不想为最深的对象创建 children 对象嵌套对象。

const arr = [
["one", "two", "three", "four"],
["one", "two", "three", "four"],
["one", "two", "three", "four", "five"],
["one", "hi"]
];
const output = arr.reduce((a, propArr) => {
propArr.reduce((obj, prop, i) => {
if (!obj[prop]) obj[prop] = {};
if (!obj[prop].children && i !== propArr.length - 1) obj[prop].children = {};
return obj[prop].children;
}, a);
return a;
}, {});
console.log(output);

关于javascript - 如何根据包含其关键位置的数组数组生成具有嵌套键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50691685/

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