Loadash按字母顺序排序

时间:2015-08-25 16:12:51

标签: javascript

Loadash默认排序功能按ASCII字符对数据进行排序。在小写和大写字符串之间进行排序时会导致麻烦。

 filteredData = _.sortBy(filteredData, sortByField);

这里filteredData是一个对象数组。我只是调试了sortby方法,我可以看到,在内部形成一个数组,只有需要排序的列。

换句话说,我有过滤数据,其列为col1,col2,col3,col4 ...基于sortbyField,在loadash.js文件中,形成一个内部数组..例如,如果我想要sortby col3,用col3形成一个数组,然后进行排序..

我想在loadash文件中包含toLowerCase,但由于不可取,我还没有这样做。

另一个选择是,我必须将整个对象转换为小写,我相信它会开销。

有人能为我提供最佳解决方案吗?

1 个答案:

答案 0 :(得分:1)

_.sort(filteredData, function (a, b) {
  var col1a = a.col1.toLowerCase();
  var col1b = b.col1.toLowerCase();
  if (col1a === col1b) {
    return 0;
  }
  if (col1a > col1b) {
    return 1;
  }
  return -1;
});

或幻想:

var modArg = function (arg) {
  return arg.col1.toLowerCase();
};

var compare = _.modArg(function (a, b) {
  if (a === b) {
    return 0;
  }
  if (a > b) {
    return 1;
  }
  return -1;
}, modArg, modArg);

_.sort(filteredData, compare);