javascript - JavaScript 数组中的字符串索引

标签 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();
    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 ;
}

关于javascript - JavaScript 数组中的字符串索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326635/

相关文章:

C - 读取直到 EOF,获取附加地址和数字(数组)

javascript - 如何使用 lodash 或 JavaScript 提取过滤后的对象

MySQL删除语句优化

sql - 交易内统计数据快速变化 - 修复执行计划

javascript - Javascript/Jquery在桌面浏览器中运行很快,但在移动/智能手机浏览器中运行慢...我应该拆分站点并使用jQuery Mobile吗?

javascript - 有没有一种简单的方法可以使嵌套数组变平?

javascript - Jquery 和 mootools 在 socialengine 中使用滚动方法

javascript - 如何为我的整个包启用严格模式但不为依赖启用?

java - 为什么允许我将泛型数组声明为实例变量?

python - Pandas 按名称索引和访问列