0

次の方法でアクセスできるアレイを作成したいという状況があります。

myArray['Foo'].push(myObj);

しかし、私はそれを最初から作成する方法を知りません。私が読んだことから、多分次のことがそれをするだろうと思いました:

var myArray = new Array(new Array());

問題は、myArray[]を参照するために整数しか使用できないことです。この制限を無視して次のエラーを試してみると、.push()がないというエラーが表示されます。

myArray[i].push(myObj); 

これは、myArray [i]が文字列を返しているためだと思いますか?

だから私の質問は、文字列を使用して最初の次元を参照し、次に2番目の次元をプッシュしてポップできる動的配列を構築するにはどうすればよいですか?また、このアプローチを採用した場合、最初の次元に文字列を追加するためにプッシュとポップを使用できますか?


私はこれについてもう少し前に考えて、うまくいくかもしれないと思ったコードを書きました。

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);
    }
}

上記はそれについて行く正しい方法ですか?


上記の用語に問題があると確信しています。お知らせください。正しくなるように編集します。

4

1 に答える 1

2

あなたが呼ん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"]
};

だからおそらく今あなたの質問への答えはより明確になります:

文字列を使用して最初の次元を参照し、2番目の次元をプッシュおよびポップできる動的配列を作成するにはどうすればよいですか?

「最初の」、つまり外側の次元を配列ではなくオブジェクトにすることによって。

また、このアプローチを採用した場合、最初の次元に文字列を追加するためにプッシュとポップを使用できますか?

いいえ、でも使用できます

myObject.somewhereNew = [];
于 2013-01-19T05:38:50.937 に答える