gpt4 book ai didi

javascript - 在 Javascript 中使用对象对数组项进行分组

转载 作者:行者123 更新时间:2023-11-29 16:34:53 25 4
gpt4 key购买 nike

我有以下代码:

const temp = {
"address.addr1": "Some value 1",
"address.addr2": "Some value 2",
"qual.qual1": "Some value 1",
"qual.qual2": "Some value 2",
"gender": "Male"
}

let finalVal = {};

transformValues(temp);

function splitKeys(value) {
const splitValues = value.split('.');
console.log(splitValues)

}

function transformValues(values) {

const keys = Object.keys(values);
keys.forEach(key => {
splitKeys(key);
});
}

我希望输出具有以下格式:

let finalVal = {
address: {
addr1: "Some value 1",
addr2: "Some value 2"
},
qual: {
qual1: "Some value 1",
qual2: "Some value 2"
},
gender: "Male"
}

请帮助我使用 JavaScript 来控制台输出,如上所示。我尝试过使用 lodashsplitslice,但我无法破解该输出。


最佳答案

您可以使用函数来分割值的路径并为其生成新对象。

它适用于任何深度。

function setValue(object, path, value) {
var last = path.pop();
path.reduce((o, k) => o[k] = o[k] || {}, object)[last] = value;
return object;
}

var temp = { "the.ultimate.question": 42, "address.addr1": "Some value 1", "address.addr2": "Some value 2", "qual.qual1": "Some value 1", "qual.qual2": "Some value 2", "gender": "Male" },
finalVal = {};

Object
.entries(temp)
.forEach(([k, v]) => setValue(finalVal, k.split('.'), v));

console.log(finalVal);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 Javascript 中使用对象对数组项进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52380786/

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