如何使用下划线 js 对 JavaScript 对象进行排序? [复制]
Posted
技术标签:
【中文标题】如何使用下划线 js 对 JavaScript 对象进行排序? [复制]【英文标题】:How to sort JavaScript object using underscore js? [duplicate] 【发布时间】:2016-04-23 05:36:34 【问题描述】:以下是我的 javascript 对象。
"014b9d42":
"notification": 0,
"userName": "adam"
,
"02f5b60e":
"notification": 3,
"userName": "jake"
,
"1281d8fb":
"notification": 1,
"userName": "eomer"
,
"12a2a564":
"notification": 0,
"userName": "bella"
我想根据通知的值对上述对象进行排序。如何使用下划线 js 做到这一点?
【问题讨论】:
对象中没有顺序 你会想要一个数组而不是一个对象。也许让你的对象的键成为另一个属性,这样你就可以拥有一个对象数组 【参考方案1】:正如@adeneo 指出的那样,order in objects is not guaranteed。您需要将对象转换为数组,然后根据notification
属性进行排序。
var jsonObj = JSON;
var arr = [];
for (var key in jsonObj)
if (jsonObj.hasOwnProperty(key))
var o = jsonObj[key];
arr.push( id: key, notification: o.notification, userName: o.userName );
arr.sort(function(obj1, obj2)
return obj1.notification - obj2.notification;
);
这是working JSFiddle。
【讨论】:
【参考方案2】:您提供的 JSON 不是列表。因此无法排序。如果这是一个列表,那么您可以使用以下代码:
var a = [
"014b9d42":
"notification": 0,
"userName": "adam"
,
"02f5b60e":
"notification": 3,
"userName": "jake"
,
"1281d8fb":
"notification": 1,
"userName": "eomer"
,
"12a2a564":
"notification": 0,
"userName": "bella"
];
var sorted = _.sortBy(a, function(item)
var key = [Object.keys(item)[0]];
return item[key]['notification'];
);
console.log(sorted);
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
【讨论】:
以上是关于如何使用下划线 js 对 JavaScript 对象进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 rails 对咖啡脚本文件使用 .js.coffee 扩展名,因为它们无论如何都不能包含 JavaScript 代码?
Solana - 如何从 JavaScript / Node.js 中的本地密钥对获取帐户?
After Effects / ExtendScript:使用库和导入 .jsx 文件?