gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:40:09 24 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但现在我无法弄清楚。所以我有需要。

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

 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"

我知道这并不困难。但我现在无法弄清楚。我们将不胜感激。

最佳答案

您无法将任何内容pushname[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"}

如果您不希望 pushlength 显示在 for ( prop in xxx ) if (xxx.hasOwnProperty(prop)) 上 code>,你可以像这样创建一个类:

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 类。

关于javascript - 如何将json数据推送到2级或n级数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324806/

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