Loadash默认排序功能按ASCII字符对数据进行排序。在小写和大写字符串之间进行排序时会导致麻烦。
filteredData = _.sortBy(filteredData, sortByField);
这里filteredData是一个对象数组。我只是调试了sortby方法,我可以看到,在内部形成一个数组,只有需要排序的列。
换句话说,我有过滤数据,其列为col1,col2,col3,col4 ...基于sortbyField,在loadash.js文件中,形成一个内部数组..例如,如果我想要sortby col3,用col3形成一个数组,然后进行排序..
我想在loadash文件中包含toLowerCase,但由于不可取,我还没有这样做。
另一个选择是,我必须将整个对象转换为小写,我相信它会开销。
有人能为我提供最佳解决方案吗?
答案 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);