gpt4 book ai didi

javascript - 如何将字符串数组的数组转换为一个对象,其中每个字符串都是包含下一个字符串的对象的键

转载 作者:行者123 更新时间:2023-12-04 14:02:42 25 4
gpt4 key购买 nike

我有一个这样格式化的数组

const array = [
['technology', 'apple', 'computers', 'macbook_pro'],
['technology', 'apple', 'computers', 'macbook_air'],
['technology', 'apple', 'phones', 'iphone'],
['technology', 'samsung', 'phones', 'Galaxy S21'],
]

我需要将其转换为格式如下的对象:

{
technology: {
apple: {
computers: {
macbook_pro: {},
macbook_air: {}
},
phones: {
iphone: {}
}
},
samsung: {
phones: {
galaxy_s21: {}
}
}
}
}

我尝试用两个 forEach 循环完成它,但我总是卡住。

最佳答案

使用 Array#reduce ,在更新对象累加器的同时遍历数组。

在每次迭代中,将current 设置为累加器并使用Array#forEach 遍历当前列表。 .如果 current 没有属性,请使用 nullish operator 将值设置为 {} .然后,将 current 重置为它以在下一次迭代中使用。

const array = [
['technology', 'apple', 'computers', 'macbook_pro'],
['technology', 'apple', 'computers', 'macbook_air'],
['technology', 'apple', 'phones', 'iphone'],
['technology', 'samsung', 'phones', 'Galaxy S21'],
];

const res = array.reduce((acc, props) => {
let current = acc;
props.forEach(prop => {
current[prop] ??= {};
current = current[prop];
});
return acc;
}, {});

console.log(res);

关于javascript - 如何将字符串数组的数组转换为一个对象,其中每个字符串都是包含下一个字符串的对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69466994/

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