javascript - 如何根据不同的键对数组进行排序

标签 javascript underscore.js

我有数组对象

var myObj = [
    {'week2Volume': 'asdsadfd'},
    {'week1Volume': 'masdasaf'},
    {'week3Volume': 'dsfdsfsdf'}
  ] 

如何根据键对其进行排序 我的意思是我想要的结果是

var myObj = [
    {'week1Volume': 'masdasaf'},
    {'week2Volume': 'asdsadfd'},    
    {'week3Volume': 'dsfdsfsdf'}
  ] 

我尝试过的 -

_.sortBy(myObj, function(o) { return o.toLowerCase();   })  

我正在使用下划线请建议我任何解决方案。任何 JavaScript 原生解决方案都可以。 谢谢。

最佳答案

Underscore's documentation on sortBy() :

Returns a (stably) sorted copy of list, ranked in ascending order by the results of running each value through iteratee.

(强调我的)

迭代器应返回排序依据的键:

_.sortBy(myObj, function(o){ return _.keys(o)[0]; })

这将通过第一个键过滤返回预期的对象。

<小时/>

_.keys(o); 实际上返回一个键数组。如果您期望更多的键并希望限制排序的键,您可以将结果传递给 _.filter():

_.sortBy(myObj, function(o) {
    // filter the set of keys
    return _.filter(_.keys(o), function(key) {
        // filter key by this matcher
        return /^week[0-9]+Volume$/.test(key);
    })[0];
});

这样它会给出相同的结果

var myObj = [
        {'b': 1, 'week2Volume': 'asdsadfd'},
        {'c': 2, 'week1Volume': 'masdasaf'},
        {'a': 3, 'week3Volume': 'dsfdsfsdf'}
    ] 

关于javascript - 如何根据不同的键对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248142/

相关文章:

javascript - lodash、分组和计数

javascript - 使用下划线过滤以下 JSON

javascript - 在触摸事件上获取未定义的 "Cannot read property ' 偏移量

javascript - 有条件地加载并执行外部 js 文件

javascript - 通过单击子元素获取父级 div id

javascript - 从 Backbone collection add 更新项目 View

javascript - 一个 JSON 对象分成几个集合对象

javascript - 使用 debounce 监听多个范围的值变化

javascript - 对表中的行进行排序

javascript - 如何修复阻止下拉列表工作的 JavaScript 函数