84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Wenn ich ein JavaScript-Objekt habe wie:
var list = { "you": 100, "me": 75, "foo": 116, "bar": 15 };
Gibt es eine Möglichkeit, Immobilien nach ihrem Wert zu sortieren? Also bekam ich am Ende
list = { "bar": 15, "me": 75, "you": 100, "foo": 116 };
我们不想复制整个数据结构,或者在需要关联数组的地方使用数组。
这里有另一种方法可以做与 bonna 相同的事情:
var list = {"you": 100, "me": 75, "foo": 116, "bar": 15}; keysSorted = Object.keys(list).sort(function(a,b){return list[a]-list[b]}) console.log(keysSorted); // bar,me,you,foo
将它们移动到一个数组中,对该数组进行排序,然后将该数组用于您的目的。解决办法如下:
let maxSpeed = { car: 300, bike: 60, motorbike: 200, airplane: 1000, helicopter: 400, rocket: 8 * 60 * 60 }; let sortable = []; for (var vehicle in maxSpeed) { sortable.push([vehicle, maxSpeed[vehicle]]); } sortable.sort(function(a, b) { return a[1] - b[1]; }); // [["bike", 60], ["motorbike", 200], ["car", 300], // ["helicopter", 400], ["airplane", 1000], ["rocket", 28800]]
一旦获得了数组,您就可以按照您喜欢的顺序从数组中重建对象,从而完全实现您想要做的事情。这适用于我所知道的所有浏览器,但它取决于实现的怪癖,并且可能随时中断。您永远不应该对 JavaScript 对象中元素的顺序做出假设。
let objSorted = {} sortable.forEach(function(item){ objSorted[item[0]]=item[1] })
在 ES8 中,您可以使用 Object.entries() 将对象转换为数组:
Object.entries()
const maxSpeed = { car: 300, bike: 60, motorbike: 200, airplane: 1000, helicopter: 400, rocket: 8 * 60 * 60 }; const sortable = Object.entries(maxSpeed) .sort(([,a],[,b]) => a-b) .reduce((r, [k, v]) => ({ ...r, [k]: v }), {}); console.log(sortable);
我们不想复制整个数据结构,或者在需要关联数组的地方使用数组。
这里有另一种方法可以做与 bonna 相同的事情:
将它们移动到一个数组中,对该数组进行排序,然后将该数组用于您的目的。解决办法如下:
一旦获得了数组,您就可以按照您喜欢的顺序从数组中重建对象,从而完全实现您想要做的事情。这适用于我所知道的所有浏览器,但它取决于实现的怪癖,并且可能随时中断。您永远不应该对 JavaScript 对象中元素的顺序做出假设。
在 ES8 中,您可以使用
Object.entries()
将对象转换为数组: