我有数组对象
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/