按属性值对对象进行排序
在 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中文网其他相关文章!