使用 Lodash 对数字字符串数组进行排序

11
_.sortBy(arrData, "rhid");

这段代码对数组进行排序,但是由于"rhid"字段的值是字符串,所以排序顺序混乱了。如何按照"rhid"字段作为整数字段进行排序。

谢谢

3个回答

28

sortBy 可以使用一个函数而不是属性名。

_.sortBy(arrData, function (obj) {
    return parseInt(obj.rhid, 10);
});

4
如何使用这个实现方式按多于两个字段排序并按降序排序? - GunasekaranR
1
@GunasekaranR - 在这种情况下,您可以使用以下代码:sortBy(arrData, [function(obj) { return parseInt(obj.field1); }, function(obj) { return parseInt(obj.field2); }]); - Aatif Khan

8
可以使用箭头符号实现,如下所示:
_.sortBy(arrData, (obj) => parseInt(obj.val, 10));

如果你想像@GunasekaranR提出的那样做多个字段,你也可以使用箭头符号:

_.sortBy(arrData, [
  (obj) => parseInt(obj.first_val, 10),
  (obj) => parseInt(obj.second_val, 10)
]);

第二种方法使用first_val作为主要排序对象,second_val用作打破平局的因素。

0
如果 rhid 是数字,那么你可以这样做
orderBy(
      arrData,
      function (o) {
        return new Number(o.rhid);
      },
      ["asc"]
    ),

提到了这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接