如何使用下划线 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 文件?

我们如何对 JavaScript 文件进行版本控制

如何在 mongodb javascript 中对数据库数据进行排序? (节点.js)

JS下如何实现换行?