javascript - 按字符串属性值对 JavaScript 对象进行排序
问题描述
好的,所以我从这样的服务器获取一些数据:myVar = JSON.parse(xhttp.responseText)
. 现在,我的 var 看起来像:
{
someData1234:{
score: "5",
loc: "NY"
},
someData4321:{
score: "70",
loc: "MH"
},
someData4123:{
score: "43",
loc: "NG"
}
}
我如何对对象进行排序,使其按分数降序排列?我尝试了其他解决方案,但似乎无法正常工作,因为我需要返回相同的对象(或对象数组)但只是重新排序
解决方案
如前所述,JavaScript 对象属性顺序无法保证,因此您必须将数据转换为对象数组,然后进行排序。以下示例使用Object.entries
and将初始对象转换为数组,然后通过解析每个对象中map
的数值进行排序:score
const obj = { someData1234: { score: "5", loc: "NY" }, someData4321: { score: "70", loc: "MH" }, someData4123: { score: "43", loc: "NG" } };
const arr = Object.entries(obj).map(([k, v]) => ({[k]: v}));
const sorted = arr.sort((a, b) => {
return parseInt(a[Object.keys(a)[0]].score) - parseInt(b[Object.keys(b)[0]].score);
});
console.log(sorted);
// [{"someData1234":{"score":"5","loc":"NY"}},{"someData4123":{"score":"43","loc":"NG"}},{"someData4321":{"score":"70","loc":"MH"}}]
推荐阅读
- spring-boot - 如何在 Spring Boot 中使用来自 RabbitMQ 的 XML 消息
- angular - 将 ViewEncapsulation.None 设置为每个组件
- python-3.x - 当我尝试在自定义 tkinter 文本字段中剪切和粘贴时获取 _tkinter.TclError
- php - 个性化客户的 Woocommerce 优惠券代码
- reactjs - Apollo React 嵌套查询和变异
- opencart - 在 opencart 中插入购物车总数作为奖励积分
- angular - webpack 动态移除模块
- list - 在没有数据类型的 kdb 中创建空列表
- c# - 替换单词并删除多余的空格
- visual-studio - Visual Studio 在哪里获取用于查找符号的 DLL 的哈希?