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

标签 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  <--- 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/

相关文章:

javascript - 对 JSON 中的所有数据类型使用字符串是个好主意吗?

angularjs - 可以在 Github 上托管一个基于 angular.js 的静态博客吗?

java - Android 网页 View 中的自动填充字段

javascript - 在两个 JavaScript 数组中查找元素并将每个数组存储为不同的元素

javascript - Soundcloud 对象数组为空

javascript - Angular-meteor 授权 - 在加载页面之前检查用户角色

javascript - Angularjs 将指令上的所有属性传递给 View

javascript - 如何替换返回的未定义值? (请求JS)

javascript - 多重数据过滤

c# - 如何使用 JSON.NET 创建具有嵌套值数组的 JSON 字符串?