从 0 开始的 Javascript 关联数组键

标签 javascript jquery associative-array

<分区>

关于 javascript 关联数组,我有一个简单的,也许有点愚蠢的问题。 以下是我的问题:

var testArr = [];
testArr["0000"] = "00000 - COST CENTER - BALANCE SHEET";
testArr["0017"] = "0017 - Test Team";
testArr["00033"] = "00033 - Test Team ";
testArr["87210"] = "87210 - OFFICE OF THE PRESIDENT";

这几行代码后,testArr自动排序显示如下:

testArr.87210 = "87210 - OFFICE OF THE PRESIDENT";
testArr.0000 = "00000 - COST CENTER - BALANCE SHEET";
testArr.0017 = "0017 - Test Team";
testArr.00033 = "00033 - Test Team ";

在我的例子中,0000 应该是第一个值和默认值。但由于这个原因,它默认使用 87210。我该如何克服这个问题?

编辑:当我在调试器窗口中看到 testArr 时,我看到类似下面的内容。我无法上传图片,但请按照此操作。非常感谢您的帮助。非常感谢!!

 testArr
       [87210] "87210 - OFFICE OF THE PRESIDENT";
       [prototype]  
       0000    "00000 - COST CENTER - BALANCE SHEET";
   0017    "0017 - Test Team";
   00033   "00033 - Test Team ";

我不太明白为什么会这样。我输入的键是“0000”而不是 0000。所以实际上它应该是一个正确的字符串。请解释

最佳答案

由于前导 0,您拥有一个 Javascript 对象而不是 Javascript 数组。 Javascript 对象没有顺序。它们是键->值映射。您可以将您的值转换为数字,然后改为使用稀疏数组:

var testArr = [];
testArr[+"0000"] = "00000 - COST CENTER - BALANCE SHEET";
testArr[+"0017"] = "0017 - Test Team";
testArr[+"00033"] = "00033 - Test Team ";
testArr[+"87210"] = "87210 - OFFICE OF THE PRESIDENT";

// Results in:

[
     0: "00000 - COST CENTER - BALANCE SHEET",
    17: "0017 - Test Team",
    33: "00033 - Test Team ",
 87210: "87210 - OFFICE OF THE PRESIDENT"
]

如果您需要维护前导的 '0',或者如果您的键不一定总是数字,您应该改用对象数组:

var testArr = [];
testArr.push({id: "0000", name: "00000 - COST CENTER - BALANCE SHEET"});
testArr.push({id: "0017", name: "0017 - Test Team"});
testArr.push({id: "00033", name: "00033 - Test Team "});
testArr.push({id: "87210", name: "87210 - OFFICE OF THE PRESIDENT"});

然后您维护顺序并可以像这样按顺序循环:

for(var i = 0; i < testArr.length; i++){
    console.log(testArr[i].id + ': ' + testArr[i].name);
}

关于从 0 开始的 Javascript 关联数组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622865/

相关文章:

jquery - 即使未设置,qTip 也会显示边距?

php - 在 PHPUnit 中断言数组 equalTo 且某些值为 null

javascript - iPhone iOS 上的 val() 不返回文本区域值

javascript - 尝试将字符串数据转换为数值数据,将数据放入数组数组(Json)中

javascript - 警告 : Invalid value for prop `value` on &lt;input&gt; tag

javascript - jQuery .append() 没有按预期工作

php - 哈希表 VS 关联数组

python - Python中dict对象的联合

javascript - 使用 Angular 4 Form Group 编辑和添加新数据

javascript - 如何让hapi很好地忽略特定路线