Javascript 如何将json数据推送到2级或n级数组中

Javascript 如何将json数据推送到2级或n级数组中,javascript,json,angularjs,Javascript,Json,Angularjs,这可能是个愚蠢的问题,但现在我想不出来。所以我需要帮助 我正在显示静态数据,但我希望在将来使其成为动态数据 var name = []; name.push({ name: "Gareth" }); name[0].push({ name: "john" }); // This statement doesn't work as name[0]!=[] I guess. name[0].push({name:"dolly"}); 我想得到一个像 +name <--- expa

这可能是个愚蠢的问题,但现在我想不出来。所以我需要帮助

我正在显示静态数据,但我希望在将来使其成为动态数据

 var name = [];
 name.push({ name: "Gareth" });
 name[0].push({ name: "john" }); // This statement doesn't work as name[0]!=[] I guess.
 name[0].push({name:"dolly"});
我想得到一个像

 +name  <--- expandable

     +0   <--- expandable

          name : "gareth"

          +0  <--- expandable
             name: "john"

          +1   <--- expandable
             name: "dolly"

+name您不能
将任何内容推送到
名称[0]
上,因为它不是一个数组,但您仍然可以为它分配带有数字的元素,并创建自己的推送

var makePushable = function (obj) {
  obj.push = function (item) {
    this[this.length] = item;
    this.length++;
  };
  obj.length = 0; //Keep track of how many elements
}

var name = [];
name.push({ name: "Gareth" });

makePushable(name[0]);
name[0].push({ name: "john" });
name[0].push({ name:"dolly" });
我们得到:

name[0]    ---> {
    name:"gareth",

    0: {name:"john"},
    1: {name:"dolly"},

    length: 2,
    push: function () { ... }
}
name[0][0] ---> {name:"john"}
name[0][1] ---> {name:"dolly"}
如果不希望
push
length
for(xxx中的prop)上显示,如果(xxx.hasOwnProperty(prop))
,可以创建如下类:

var Pushable = function (obj) {
  for (var i in obj) {
    this[i] = obj[i];
  }
  Object.setPrototypeOf(this, {
    push: function (item) {
      this[this.length] = item;
      Object.getPrototypeOf(this).length++;
    },
    length: 0
  });
};

Pushable.prototype.push = function (item) {
  this[this.length] = item;
  Object.getPrototypeOf(this).length++;
};
Pushable.prototype.length = 0;

var name = [];
name.push(new Pushable({ name:"Gareth" }));
name[0].push(new Pushable({ name: "john" }));
name[0].push(new Pushable({ name:"dolly" }));
name[0][1].push(new Pushable({ name:"last kid" }));

您可以使用
push
功能,根据需要自动创建一个
Pushable
类。

首先更改数组名称 试试这个

 var m = {}; m.name=[];
 m.name.push({ name: "Gareth" });
 m.name.push({ name: "john" }); // This statement doesn't work as name[0]!=[] I guess.
 m.name.push({name:"dolly"});
发出


您是对的,您必须更改数据结构,也许您可以在
名称[0]
中添加
arr
属性。还有do
name[0]。arr[0]-->{name:“john”}
怎么做?你能通过密码告诉我吗?考虑到可能的话,它会有动态的接近。否则至少对其他索引执行此操作。这听起来像是一个
X-Y
问题。从解释用例开始,但是
for(xxx中的道具)
将为您提供
名称
长度
0
1
推送
@NULL是的,您可以创建一个新类。@micronyks您是什么意思?你期待什么,会发生什么?NVM,我忘了增加
长度
。输出应该是:+name=>展开它。它给你+[0]=>扩展它给你的名字:“gareth”+0,+1。。。。我希望你能理解。它属于.net framework输出,可以通过输出intellisense查看…我已经提到我想要哪种输出…在我的上述问题中再次查看输出…您在数组中设置了对象,而在对象中没有[0]项您检查了它的输出了吗?它没有给我一个我正在寻找的输出。。。它工作,但不是我想要的方式。如果你能帮我更多。输出应该是:+name=>展开它。它给你+[0]=>扩展它给你的名字:“gareth”+0,+1。。。。我希望你能理解。它属于.NETFramework输出,可以通过输出intellisense看到…哦,不。。。不应该是这样的…应该是索引必须包含{name:gareth,Oth obj,1st obj}…我已经提到了我想要哪种类型的输出。