首页 > web前端 > js教程 > 如何按属性值对 JavaScript 对象进行排序?

如何按属性值对 JavaScript 对象进行排序?

Linda Hamilton
发布: 2024-12-29 09:42:11
原创
817 人浏览过

How to Sort JavaScript Objects by Property Values?

按属性值对对象进行排序

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板