在React中排序吗?

时间:2018-07-22 04:22:35

标签: reactjs sorting

我从服务器获取数据,有些项目具有特定的属性,而另一些则没有。我需要根据此特定属性对数据进行排序,并且我使用的是 sortBy 包,但是它当然不能正常工作,因为它在尝试对数据进行排序时并没有找到该属性,它已损坏。

myItems.sort(sortBy('specificAttr'))

基本上,我做了什么(想想一个循环内):

 if(!myItems.specificAttr) {myItems.speficificAttr = 0);

我知道这根本没有道理,但我不知道我能做什么。

您对代码示例有何建议?

1 个答案:

答案 0 :(得分:0)

使用lodash's sortBy

Lodash开箱即用地处理这种情况。如果找不到该属性,它将被推到排序数组的末尾。

var users = [
  { 'age': 48 },
  { 'user': 'barney', 'age': 36 },
  { 'user': 'fred',   'age': 40 },
  { 'user': 'barney', 'age': 34 }
];
 
_.sortBy(users, [(o) => { return o.user; }]);
// => objects for barney, barney, fred, and no-name in that order

_.sortBy(users, ['user']);
// => objects for barney, barney, fred, and no-name in that order

如果您使用的是其他库的sortBy,请查看文档以查看是否存在可选的第二个参数,该参数可让您自定义属性getter函数。

滚动自己的游戏

如果您要实现自己的排序算法,只需进行if myItem.specificAttr之类的检查即可在进行实际排序时检查该属性是否存在(而不是如示例中所描述的那样进行先前的排序)