Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用包含数字段的路径设置嵌套值时如何创建数组_Javascript - Fatal编程技术网

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

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

我正在努力弄清楚如何修改这个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;

}
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