gpt4 book ai didi

javascript - 使用查找字符串设置深层 JS 对象键

转载 作者:行者123 更新时间:2023-11-30 15:13:13 25 4
gpt4 key购买 nike

如何使用点语法字符串在 JavaScript 对象中设置深层属性以指定要更改的属性?

对于简单的对象,我可以只使用 data['property_name'] = 'foo',但我不一定知道数据的嵌套深度。

下面是一些示例代码,说明我希望最终能够如何格式化数据。据我所知,JS 已经允许您执行此操作,但我还没有找到它。

Plunker here.

var items = [
{
lookup_string: "User.UserProfile.name",
value: "John Smith"
},
{
lookup_string: "User.email",
value: "johnsmith@example.com"
},
]



var data = {};

items.forEach(function(item){
// Inside this loop, set the appropriate keys under data. Is there a non-convoluted way to do this?
});

console.log("items", items);
console.log("Results", data)

// In the end, data should look like this:

var desiredData = {
User: {
UserProfile: {
name: 'John Smith'
},
email: 'johnsmith@example.com'
}
}

最佳答案

您可以拆分 lookup_string 并使用默认对象减少对象。稍后分配值。

function setValue(object, path, value) {
var keys = path.split('.'),
last = keys.pop();

keys.reduce(function (o, k) {
return o[k] = o[k] || {};
}, object)[last] = value;
}

var items = [{ lookup_string: "User.UserProfile.name", value: "John Smith" }, { lookup_string: "User.email", value: "johnsmith@example.com" }],
object = {};

items.forEach(function(o) {
setValue(object, o.lookup_string, o.value);
});

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

关于javascript - 使用查找字符串设置深层 JS 对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834902/

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