依屬性值對物件進行排序
在 JavaScript 中,物件是鍵值對的無序集合。然而,在某些情況下,我們可能需要根據物件的屬性值對物件進行排序。這可以透過將物件轉換為數組,按值對數組進行排序,然後從排序後的數組重建物件來實現。
讓我們考慮提供的範例:
var list = { "you": 100, "me": 75, "foo": 116, "bar": 15 };
到根據清單的值對清單的屬性進行排序,我們可以執行以下操作:
let sortable = []; for (let property in list) { sortable.push([property, list[property]]); } sortable.sort((a, b) => a[1] - b[1]); // [["bar", 15], ["me", 75], ["you", 100], ["foo", 116]]
這將建立一個包含子數組的可排序數組屬性-值對,然後根據值按升序排序。現在,我們可以按排序順序重建物件:
let objSorted = {}; sortable.forEach(item => { objSorted[item[0]] = item[1]; });
這給了我們排序後的物件:
objSorted = { "bar": 15, "me": 75, "you": 100, "foo": 116 };
在 ES8 及更高版本中,我們可以使用 Object. items():
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);
這將屬性值對的排序數組傳回為object.
需要注意的是,雖然可以按屬性值對物件進行排序,但它依賴於JavaScript 中的實作怪癖,並且將來可能會中斷。建議避免對 JavaScript 物件中元素的順序做出假設。
以上是如何依屬性值對 JavaScript 物件進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!