【发布时间】:2018-01-29 20:51:57
【问题描述】:
如何防止 JavaScript 对我的关联数组进行排序?我需要以数字或数字作为字符串的关联数组的键,因为该数组是动态创建的。由于某些原因,JS一直为我排序,这给我带来了问题。顺便说一句,我正在使用 jquery-2.0.3.min.js:
HTML
<div id='output'></div>
JavaScript
//define array
var myUnsortArray={};
myUnsortArray[98+""]='first';
myUnsortArray[99+""]='second';
myUnsortArray[1+""]='third';
myUnsortArray[2+""]='last';
//output array
var a="";
$.each(myUnsortArray,function(key,value){a=a+key+": "+value+"<br/>";});
$("#output").html(a);
输出:
1: third
2: last
98: first
99: second
首选输出:
98: first
99: second
1: third
2: last
提前谢谢你!
【问题讨论】:
-
您打算使用最终数量的字符串吗?似乎您需要构建一个大的开关/案例代码(特别是如果您想使用编号外部的
final) -
不,我不打算使用final,但是关联数组将用于其他目的,并且以数字为键是必不可少的。感谢您的检查。
-
对此的标准答案是:JS 中“关联数组”(对象)中的键没有顺序。 Wich 并不完全正确,但由于规范不能保证顺序,因此您不应依赖它。如果您想保留顺序,您应该保留一个单独的列表,其中包含正确顺序的键。
-
如果顺序很重要,请使用数组而不是对象字面量。
{}不是 n 数组 -
大多数情况下都是这样,除了
numericuint32 键;甚至作为字符串。这似乎是对实际 JS 引擎中数据结构的一些内部优化。
标签: javascript jquery arrays sorting associative-array