Javascript 使用包含数字段的路径设置嵌套值时如何创建数组
我正在努力弄清楚如何修改这个setValue()函数,这样当它遇到一个数值路径段时,如果它不存在,就会创建一个数组。当路径段是数字段时,我尝试分配[]而不是{},但它没有按预期工作Javascript 使用包含数字段的路径设置嵌套值时如何创建数组,javascript,Javascript,我正在努力弄清楚如何修改这个setValue()函数,这样当它遇到一个数值路径段时,如果它不存在,就会创建一个数组。当路径段是数字段时,我尝试分配[]而不是{},但它没有按预期工作 var obj = {}; setValue(obj, "Application.0.Employment.0.Id", 1); //Not working because objects are not created as arrays obj.Application[0].Employment.pu
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;
}
var obj={};
设置值(obj,“应用程序0.Employment.0.Id”,1);
//不工作,因为对象未创建为数组
obj.Application[0].Employment.push({Id:2});
函数setValue(对象、路径、值){
var a=路径分割('.');
var o=对象;
对于(变量i=0;i
您需要向前看一个索引。您在评论中的尝试应更改为:
o[n] = isNaN(a[i+1]) ? {} : [];
函数设置值(对象、路径、值){
var a=路径分割('.');
var o=对象;
对于(变量i=0;i