按值对对象属性进行排序
在 JavaScript 中根据对象的值对对象的属性进行排序可以通过巧妙的解决方法来实现。我们可以将它们转换为数组,对数组进行排序,然后重新创建对象,而不是依赖于对象属性的实现相关排序。
为了实现这一点,我们使用循环:
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]]
从排序后的数组中,我们可以重建对象,同时保留所需的顺序:
let objSorted = {} sortable.forEach(function(item){ objSorted[item[0]]=item[1] })
或者,如果 ES8 可用,我们可以利用 Object.entries 和 reduce 方法将对象转换为数组:
const sortable = Object.entries(maxSpeed) .sort(([,a],[,b]) => a-b) .reduce((r, [k, v]) => ({ ...r, [k]: v }), {});
由于实现原因,此方法仍然是一种解决方法怪癖,人们应该避免依赖 JavaScript 中对象属性的顺序。
以上是如何按值对 JavaScript 对象属性进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!