Kli*_*ian 10 arrays each jquery
我在JS中有这个对象:
var list = {134 : "A",140 : "B",131 : "C"}
Run Code Online (Sandbox Code Playgroud)
我运行它:
jQuery.each(list, function(key, value) {
console.log(key + " - " + value);
});
Run Code Online (Sandbox Code Playgroud)
输出应该是:
134 - A
140 - B
131 - C
Run Code Online (Sandbox Code Playgroud)
但我不知道为什么,输出是:
131 - C
134 - A
140 - B
Run Code Online (Sandbox Code Playgroud)
知道怎么解决它?
首先:这不是一个列表,它是一个对象.不保证保持对象的顺序 - 每个实现可以选择不同的顺序.
另一方面,数组确实保留了顺序:
var list = [[134, "A"],[140, "B"],[131, "C"]];
jQuery.each(list, function(i, obj) {
console.log(i + " - " + obj[0] + " - " + obj[1]);
});
Run Code Online (Sandbox Code Playgroud)
我碰到你的问题,我花了 10 分钟才明白。
这是您解决问题的方法:
var list = {134 : "A",140 : "B",131 : "C"};
// 1 - property to list
list = Object.keys(list).map(
function(key) {
return { num : key , char : list[key]};;
});
console.debug(list);
// 2 - sorting the list
var sorted = list.sort(function(a, b) {
if(a.char < b.char) return -1; return 1;
});
// 3 output
jQuery.each(sorted, function(index, obj) {
console.log(obj.num + " - " + obj.char);
});
Run Code Online (Sandbox Code Playgroud)
JsFiddle:https ://jsfiddle.net/wx38rz5L/1578/