按值對物件屬性進行排序
在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中文網其他相關文章!