排序的对象与JS
回答
var objUnordered = { alexa: 1, John: 5, Bill: 2 };
var objOrdered = {};
var sortable = [];
for (var element in objUnordered){
sortable.push([element, objUnordered[element]]);
}
sortable.sort(function(a, b) {return a[1] - b[1]})
for(var key in sortable){
objOrdered[sortable[key][0]] = sortable[key][1];
}
console.log(objOrdered); //print this -> Object { alexa=1, Bill=2, John=5}
工作,谢谢soooo多!!! – user3474502
,您仍然可以拿到钥匙的数组进行排序 - 然后就循环键数组来访问你的对象以正确的顺序:
var obj = { alexa: 1, John: 5, Bill: 2 };
var sortedKeys = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
});
sortedKeys.forEach(function(k) {
console.log(obj[k]);
});
创建从对象的数组:
var sortedArray = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
}).map(function(k) {
var o = {};
o[k] = obj[k];
return o;
});
这可行,但我需要的输出是{Alexa :1,Bill:2,John:5}当它被排序时,我需要知道属于每个数字的键,因为这些值可以重复... – user3474502
将格式更改为数组,类似'[{名称:'Alexa',麻木:1},{名称:'比尔',麻木:2}]',那么你可以对它进行排序,并保持跟踪 – adeneo
@ user3474502对象不*排序。 “{Alexa:1,Bill:2,John:5}”与“{Alexa:1,John:5,Bill:2}”完全一样,对它进行排序是一个无稽之谈。 –
你不想。 –
对象中没有顺序,无法排序 – adeneo
如果您的意思是“使用排序后的元素打印对象”,那么您可以(也应该)编辑问题:) – wil93