javascript - 使用 lodash 对包含文档的数组进行排序

标签 javascript arrays sorting lodash

我有一个包含文档数组的数组,可以帮助我了解如何对数组中包含多个文档的数组进行排序。用户可以选择要搜索的类型。如果他们可以选择“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/

相关文章:

javascript - HTML 弹出窗口不显示

javascript - 传递变量以追加

javascript - 我正在尝试从 JSON 文件检索数据,但在从特定属性检索信息时遇到问题

shell - ubuntu 环境中打开堆栈服务器列表中的排序命令问题

javascript - 如何在同位素排序后更新编号的 div?

javascript - Angular $scope 设置为另一个 $scope 值不起作用

sql - VB.NET 声明错误

java - jsp 文件中数组索引超出范围

python - 如何根据键的第一个元素(元组)对字典进行排序

javascript - 在 javascript 中创建一个提交按钮