自己对象的数组

时间:2015-10-19 18:51:02

标签: javascript multidimensional-array

我需要创建一个Person的二维数组。我怎样才能做到这一点?

这是我创建的对象:

framework:
    ...
    session:
      handler_id: ~

我想创建一个framework: ... session: handler_id: session.handler.pdo # old configuration that caused the 的二维数组。例如:

function Person() {
   var name;
   var children = new Array();
};

2 个答案:

答案 0 :(得分:2)

以下是您可以使用此类构造函数并按预期序列化的一种方法:

var Person = function(name) {
  this.name = name;
  this.children = [];
}

Person.prototype.addChild = function(child) {
  this.children.push(child);
}

Person.serialize = function(person) {
  return [person.name].concat([person.children.map(Person.serialize)]);
}

您可以这样使用它:

var fred = new Person('Fred');
fred.addChild(new Person('Pebbles'));
fred.addChild(new Person('Dino'));
Person.serialize(fred); //=> ["Fred", [["Pebbles", []], ["Dino", []]]]

或者像这样:

var barney = new Person('Barney');
var bambam = new Person('Bam-bam');
barney.addChild(bambam);

var people = [fred, barney];
people.map(Person.serialize);
//=> [["Fred", [["Pebbles", []], ["Dino", []]]], ["Barney", [["Bam-bam",[]]]]]

显然,这方面有很多变化。

答案 1 :(得分:1)

首先,你的构造函数不能工作。你的var事物是局部变量,当函数退出时它们将消失。这将做我想要的你想要的事情:

function Person() {
    this.name = null;
    //  This creates a new empty array same as new Array()
    this.children = [];
}

其次,数组数组很容易。 JavaScript中的任何引用都可以引用任何内容。这是一个包含三个数组的数组:

var arrayOfArrays = [ [], [], [] ];

或者你可以这样做:

var arrayOfArrays = [];

for (var i = 0; i < 20; ++i )
{
    arrayOfArrays[i] = [];
}

您可以使用您想要的任何内容填充这些数组,包括new Person()