1

我正在尝试从 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());
4

2 回答 2

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);
于 2018-07-26T21:33:48.283 回答
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);
于 2018-07-26T21:53:14.013 回答