我有一个情况,我希望建立一个数组,可以通过:
myArray['Foo'].push(myObj);
但是我不知道如何从头开始创建它。从我读过的内容来看,我想也许下面的内容可以解决这个问题:
var myArray = new Array(new Array());
问题是,它只允许我使用整数来引用myArray[]。如果我忽略这个限制并尝试以下操作,它会错误地说它没有。push():
myArray[i].push(myObj);
我认为这是因为myArray[I]返回一个字符串?
所以我的问题是,我如何建立一个动态数组,我使用字符串引用第一个维度,然后可以在第二个维度上推和弹出?另外,如果我采用这种方法,我可以使用push和pop来将字符串添加到第一维吗?
我之前考虑过这个问题,写了一些我认为可以工作的代码,它确实可以。
var myArray = new Object();
var myObj = new Object();
var myObj2 = new Object();
var myObj3 = new Object();
myObj.name = "Harry";
myObj2.name = "Curly";
myObj3.name = "Moe";
myArray["first"] = new Array()
myArray["first"].push(myObj);
myArray["first"].push(myObj2);
myArray["first"].push(myObj3);
myArray["second"] = new Array()
myArray["second"].push(myObj2);
myArray["third"] = new Array()
myArray["third"].push(myObj3);
iterate(myArray, "first");
iterate(myArray, "second");
iterate(myArray, "third");
function iterate(array, name) {
for(i = 0, l = myArray[name].length; i < l; i++) {
console.log(" " + name + ": " + i + " value " + myArray[name][i].name);
}
}
以上是正确的做法吗?
您所调用的myArray
不是一个数组,它是一个对象。
var myObject = {}
var myObject = new Object();
下面的所有行都做同样的事情;它们在对象myObject中创建了一个名为"first"的键,并存储了一个新的空数组(您可以将其放入其中):
myObject['first'] = new Array();
myObject['first'] = [];
myObject.first = new Array();
myObject.first = [];
现在你可以把这个数组:
myArray["first"].push("hello");
这里有另一种从头开始编写的方法:
var myObject = {
first: ["hello"]
};
也许现在你的问题的答案变得更清楚了:
我如何构建一个动态数组,我使用字符串引用第一个维度,然后可以在第二个维度上推和弹出?
通过使"first"或外层维度为对象而不是数组。
另外,如果我采用这种方法,我可以使用push和pop来将字符串添加到第一维吗?
不行,但是你可以使用
myObject.somewhereNew = [];