传递数组以使用函数进行排序

时间:2018-08-08 06:50:45

标签: javascript arrays

我想传递来自函数的数据数组进行排序。 例如:

const DEFAULT_COMPETITORS = [ 'Seamless/Grubhub', 'test'];

DEFAULT_COMPETITORS.sort(function (a, b) {
    return a.toLowerCase().localeCompare(b.toLowerCase());
});

上述工作正常。但是我想要来自函数而不是DEFAULT_COMPETITORS const的数据。我要像下面这样:

我的数据来自getAllCompetitors,而不是常量。

function getAllCompetitors() {
    $.ajax({
        url: '/salescrm/getTopCompetitorsList',
        type: 'POST',
        success: function(data) {
            console.log('getAllCompetitors data: ',data);
            response(data);
        },
        error: function(data) {
            console.log('data error: ',data);
        }
    });
 }

getAllCompetitors.sort(function (a, b) {
    return a.toLowerCase().localeCompare(b.toLowerCase());
}); 

希望你们有..能帮我吗

预先感谢

2 个答案:

答案 0 :(得分:1)

我希望这会起作用

function getAllCompetitors() {
    return $.ajax({
        url: '/salescrm/getTopCompetitorsList',
        type: 'POST',
    });
 }


getAllCompetitors()
      .then(res => {
          // you can sort the data 
          let sortedData = res.sort(function (a, b) {
            return a.toLowerCase().localeCompare(b.toLowerCase());
        }); 
        console.log("sortedData once ajax call made the success",sortedData)
      })
      .fail(err= > console.log(err))

答案 1 :(得分:0)

这是一个简单的例子:

在任何数组上,您都可以使用funcion .sort()根据默认排序规则进行排序,或者将.sort与函数配合使用以使用您在方法中提供的自定义排序规则

默认排序:

var items = ['baa', 'aaa', 'aba',"Caa"];
var sortedItems = items.sort();
console.log(sortedItems);

自定义排序:

var items = ['baa', 'aaa', 'aba','Caa'];
var sortedItems = items.sort(function(item1,item2){
     // Locale text case insensitive compare
     return item1.toLowerCase().localeCompare(item2.toLowerCase());
});
console.log(sortedItems);

Mozilla Sort documentation