JavaScript 数组中的字符串索引

String index in a JavaScript array

本文关键字:字符串 索引 数组 JavaScript      更新时间:2023-09-26

除了数组索引的数字之外,我还想使用特定的字符串,

我这样做

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/

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