3

配列のインデックスに数字以外に特定の文字列を使いたいのですが、

私はこのように作ります

var array = new Array();
$(document).ready(function(){
    array = addToArray();
    console.log("array size " + array.length);
});

function addToArray(){
    var i = 0;
    var tmpArray = new Array();
    while(i<10){
        if(i>9){
            addToArray();
            i++;
        }
        else{
            tmpArray["elem"+i] = "i";
            console.log(tmpArray["elem"+i]); // It prints out!!!
            i++;
        }
    }
    console.debug(tmpArray);

    return tmpArray;
}

tmpArray を出力すると空です。また、サイズは0です。配列のインデックスから「elem」を削除すると、正常に動作します。私は何をすべきか?

これが実際の例です: http://jsfiddle.net/dfg3x/

4

1 に答える 1

8

JavaScript には、PHP やその他の言語のような文字列配列キーがありません。あなたが行ったことは、名前付きのプロパティelem + itmpArrayオブジェクトに追加することです。.lengthプロパティがそこにあり、アクセス可能であっても、配列のプロパティには影響しません。また、次のような配列メソッドを介してアクセスすることはできません。.pop(), .shift()

おそらく代わりにtmpArray、数値キーで使用していないように見えるため、オブジェクトリテラルとして宣言する必要があります。

function addToArray() {
    var i = 0;
    // Make an object literal
    var tmpObj = {};
    while(i<10) {
       if(i>9) {
          addToArray();
          i++;
       }
       else {
          tmpObj["elem"+i] = "i";
          console.log(tmpObj["elem"+i]); //it prints out !!!
          i++;
       }
    }
    console.debug(tmpObj );

    return tmpObj ;
}
于 2012-04-26T03:02:05.460 に答える