我需要创建一个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();
};
答案 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()
。