如何在JavaScript中为array.sort调用共享比较功能?

时间:2018-07-26 21:30:31

标签: javascript arrays sorting

我正在尝试从array.sort调用共享比较器函数来对2个不同的数组进行排序。

如果我有:

projects.sort(
        function(a, b){
          var x = a.name.toLowerCase();
          var y = b.name.toLowerCase();
          if (x < y) {return -1;}
          if (x > y) {return 1;}
          return 0;
        });

products.sort(
        function(a, b){
          var x = a.name.toLowerCase();
          var y = b.name.toLowerCase();
          if (x < y) {return -1;}
          if (x > y) {return 1;}
          return 0;
        });

我该怎么做?

projects.sort(sortArray());
products.sort(sortArray());

2 个答案:

答案 0 :(得分:3)

创建一个命名函数:

function compare(a, b){
  var x = a.name.toLowerCase();
  var y = b.name.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
}

然后,您可以在调用sort时引用此函数:

projects.sort(compare);
products.sort(compare);

答案 1 :(得分:0)

function sortItems(a,b) {
  var   x = a.name.toLowerCase(),
        y = b.name.toLowerCase()

  return x.localeCompare(y);
 }

// Then use this
projects.sort(sortItems);
products.sort(sortItems);