我有一个包含文档数组的数组,可以帮助我了解如何对数组中包含多个文档的数组进行排序。用户可以选择要搜索的类型。如果他们可以选择“A”,则按与类型“A”关联的值对所有数组项进行排序,对于其他类型也类似。做这个的最好方式是什么。 Lodash 解决方案将非常有益。这些值可以是整数/字符串/guids/日期时间字段。
类型始终是一个字符串,无论如何我认为它并不重要。
[
[{type:A, value:10},{type:B, value:20},{type:C, value:15},{type:D, value:20}],
[{type:A, value:5},{type:B, value:10},{type:C, value:35},{type:D, value:40}],
[{type:A, value:30},{type:B, value:30},{type:C, value:25},{type:D, value:30}],
[{type:A, value:20},{type:B, value:50},{type:C, value:55},{type:D, value:10}]
]
如果按类型“A”排序,则需要输出
[[{type:A, value:5},{type:B, value:10},{type:C, value:35},{type:D, value:40}],
[{type:A, value:10},{type:B, value:20},{type:C, value:15},{type:D, value:20}],
[{type:A, value:20},{type:B, value:50},{type:C, value:55},{type:D, value:10}],
[{type:A, value:30},{type:B, value:30},{type:C, value:25},{type:D, value:30}]]
最佳答案
这是一个使用 sortBy 的 lodash 解决方案用于排序和 find获取具有特定类型
的相应值。
var result = _.sortBy(data, function(item) {
return _.find(item, { type: 'A' }).value;
});
var data = [
[{
type: 'A',
value: 10
}, {
type: 'B',
value: 20
}, {
type: 'C',
value: 15
}, {
type: 'D',
value: 20
}],
[{
type: 'A',
value: 5
}, {
type: 'B',
value: 10
}, {
type: 'C',
value: 35
}, {
type: 'D',
value: 40
}],
[{
type: 'A',
value: 30
}, {
type: 'B',
value: 30
}, {
type: 'C',
value: 25
}, {
type: 'D',
value: 30
}],
[{
type: 'A',
value: 20
}, {
type: 'B',
value: 50
}, {
type: 'C',
value: 55
}, {
type: 'D',
value: 10
}]
];
var result = _.sortBy(data, function(item) {
return _.find(item, { type: 'A' }).value;
});
console.log(result);
body > div { min-height: 100%; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
关于javascript - 使用 lodash 对包含文档的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42813780/