对javascript数组使用索引和多维字符串感到困惑



我有一个情况,我希望建立一个数组,可以通过:

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 = [];

相关内容

  • 没有找到相关文章

最新更新