【问题标题】:String index in a JavaScript arrayJavaScript 数组中的字符串索引
【发布时间】:2012-05-06 18:50:46
【问题描述】:

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

我是这样的

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 arrays indexing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多