JavaScript 数组中的字符串索引

4

我想在数组的索引中使用一个特定的字符串和数字,

我可以这样做:

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/

1个回答

8
JavaScript中没有像PHP和其他一些语言那样的字符串数组键。你所做的是向tmpArray对象添加了一个名为"elem+i"的属性。尽管该属性存在且可访问,但它不会影响数组的".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 ;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接