下划线sortBy函数在比较数字和文本时不起作用

时间:2018-06-08 08:18:23

标签: sorting underscore.js

sortBy没有正确排序。它只是按原样返回数组。 例如。可以直接在控制台中运行的脚本(提供_对象可用)

var abc = ["n/a",0,0,"n/a","n/a",0]
_.sortBy(abc)

//["n/a", 0, 0, "n/a", "n/a", 0]    //returns this

任何建议!!!

1 个答案:

答案 0 :(得分:0)

您应该添加iteratee方法,以使该函数能够在排序时正确比较值。由于您使用混合类型(数字和字符串),您需要做更多的工作。

function asNumber(v) {
  var num = Number(v);
  if(isNan(num)) {
    return v; // original value
  } else {
    return num;
  }
}

然后调用:

_.sort(abc, asNumber)