Javascript associative array keys with starting 0
本问题已经有最佳答案,请猛点这里访问。
关于javascript关联数组,我有一个简单的,也许有点愚蠢的问题。以下是我的问题:
1 2 3 4 5 | 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自动排序并显示如下:
1 2 3 4 | 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列为违约。我怎样才能克服这个问题?
编辑:当我在Debugger窗口中看到Testarr时,我看到如下内容。我无法上传图片,但请按此操作。非常感谢你的帮助。非常感谢!!
1 2 3 4 5 6 | testArr [87210]"87210 - OFFICE OF THE PRESIDENT"; [prototype] 0000 "00000 - COST CENTER - BALANCE SHEET"; 0017 "0017 - Test Team"; 00033 "00033 - Test Team"; |
我不太明白为什么会这样。我放的钥匙是"0000"而不是"0000"。所以实际上它应该是一个字符串。请解释
因为前面的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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" ] |
如果您需要维护前导的
1 2 3 4 5 | 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"}); |
然后保持顺序,并可以按如下顺序循环:
1 2 3 | for(var i = 0; i < testArr.length; i++){ console.log(testArr[i].id + ': ' + testArr[i].name); } |
根据您需要如何使用它,您也可以这样做:
1 2 3 4 5 6 | var testArr = []; testArr.push({ id:"0000", value:"00000 - COST CENTER - BALANCE SHEET"}); testArr.push({ id:"0017", value:"0017 - Test Team"}); testArr.push({ id:"00033", value:"00033 - Test Team"}); testArr.push({ id:"87210", value:"87210 - OFFICE OF THE PRESIDENT"}); |
您的数组将保持您创建它的顺序,并且您的ID将保持不变。当然,您将无法像使用ID的关联数组那样访问该项。
根据您的评论进行编辑:
javascript中的对象与关联数组相同。所以当你这样做的时候:
它和
既然如此,你就能明白为什么没有排序。对象中的属性没有排序顺序。
我所做的不同之处是将对象推入一个数组(实际数组,而不是关联数组/对象),因此索引是按0、1、2(因为它是一个数组)进行的,并且顺序是保留的。