gpt4 book ai didi

javascript - 使用包含数字段的路径设置嵌套值时如何创建数组

转载 作者:行者123 更新时间:2023-11-30 20:02:37 26 4
gpt4 key购买 nike

我正在努力弄清楚如何修改此 setValue() 函数,以便在遇到数字路径段时创建一个数组(如果它不存在)。当路径段是数字时,我尝试分配 [] 而不是 {} 但它没有按预期工作。

var obj = {};

setValue(obj, "Application.0.Employment.0.Id", 1);

//Not working because objects are not created as arrays
obj.Application[0].Employment.push({ Id: 2 });


function setValue(object, path, value) {

var a = path.split('.');
var o = object;
for (var i = 0; i < a.length - 1; i++) {
var n = a[i];
if (n in o) {
o = o[n];
} else {
//o[n] = isNaN(n) ? {} : [];
o[n] = {};
o = o[n];
}
}
o[a[a.length - 1]] = value;

}

最佳答案

你需要向前看一个索引。您在评论中的尝试应更改为:

o[n] = isNaN(a[i+1]) ? {} : [];

function setValue(object, path, value) {
var a = path.split('.');
var o = object;
for (var i = 0; i < a.length - 1; i++) {
var n = a[i];
if (n in o) {
o = o[n];
} else {
o[n] = isNaN(a[i+1]) ? {} : [];
o = o[n];
}
}
o[a[a.length - 1]] = value;
}

var obj = {};
setValue(obj, "Application.0.Employment.0.Id", 1);
console.log(JSON.stringify(obj));

obj.Application[0].Employment.push({ Id: 2 });
console.log(JSON.stringify(obj));

关于javascript - 使用包含数字段的路径设置嵌套值时如何创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53214516/

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