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
属性。还有doname[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}…我已经提到了我想要哪种类型的输出。