如何阻止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
提前谢谢!
答案 0 :(得分:2)
以不同方式存储数据怎么样?而不是由键:值对组成的对象,使其成为由值:位置对组成的数组:
let unsorted = [];
unsorted.push({value:"first", pos:"98"});
unsorted.push({value:"second", pos:"99"});
unsorted.push({value:"third", pos:"1"});
unsorted.push({value:"last", pos:"2"});
//output array
console.log(unsorted);
var a ="";
$.each(unsorted,function(index, item){
console.log(item.value);
a = a + item.pos + ": " + item.value + "<br/>";
});
$("#output").html(a);
/* Output:
* 98: first
* 99: second
* 1: third
* 2: last
*/
答案 1 :(得分:1)
jQuery没有排序,这是某些浏览器中Javascript的特定行为,因此无法确保插入顺序。
在没有jQuery .each
功能的情况下查看此代码段:
//define array
var myUnsortArray = {};
myUnsortArray[98 + ""] = 'first';
myUnsortArray[99 + ""] = 'second';
myUnsortArray[1 + ""] = 'third';
myUnsortArray[2 + ""] = 'last';
//output array
var a = "";
for (key in myUnsortArray) {
a = a + key + ": " + myUnsortArray[key] + "<br/>";
}
$("#output").html(a);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span id="output"></span>
&#13;
请参阅?没有jQuery,键正在被排序。
以下代码段显示了如何使用Map
类保留广告订单:
var myUnsortMap = new Map();
myUnsortMap.set('98', 'first');
myUnsortMap.set('99', 'second');
myUnsortMap.set('1', 'third');
myUnsortMap.set('2', 'last');
//output array
var a = "";
for (var [key, value] of myUnsortMap) {
a = a + key + ": " + value + "<br/>";
}
$("#output").html(a);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span id="output"></span>
&#13;
请参阅?现在它遵循了插入顺序。