JavaScript数组中的字符串索引

JavaScript数组中的字符串索引,javascript,arrays,indexing,Javascript,Arrays,Indexing,我想在数组的索引中使用一个数字之外的特定字符串 我是这样做的 var array = new Array(); $(document).ready(function(){ array = addToArray(); console.log("array size " + array.length); }); function addToArray(){ var i = 0; var tmpArray = new Array(); wh

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

我是这样做的

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;
}
var数组=新数组();
$(文档).ready(函数(){
数组=addToArray();
log(“数组大小”+数组长度);
});
函数addToArray(){
var i=0;
var tmpArray=新数组();
while(i9){
addToArray();
i++;
}
否则{
tmpArray[“元素”+i]=“i”;
console.log(tmpArray[“elem”+i]);//它会打印出来!!!
i++;
}
}
控制台调试(tmpArray);
返回tmpArray;
}
​ 当我打印出tmpArray时,它是空的。而且大小为0。当我从数组的索引中删除“elem”时,它可以正常工作。我该怎么办


这里有一个真实的例子:

JavaScript没有像PHP和其他一些语言那样的字符串数组键。您所做的是将名为
elem+i
的属性添加到
tmpArray
对象中。它不会影响数组的
.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 ;
}
函数addToArray(){
var i=0;
//使对象成为文字
var tmpObj={};
while(i9){
addToArray();
i++;
}
否则{
tmpObj[“元素”+i]=“i”;
log(tmpObj[“elem”+i]);//它会打印出来!!!
i++;
}
}
调试控制台(tmpObj);
返回tmpObj;
}