【问题标题】:Jquery sorting array of numbers and strings alphabeticallyJquery按字母顺序排序数字和字符串数组
【发布时间】:2017-07-05 14:28:59
【问题描述】:

我正在尝试用数字和字符串对对象数组进行排序。使用数字列的排序工作正常,但使用字符串的排序似乎有一些问题。我无法弄清楚这里的问题....

result = [{
      "title": "test",
      "client": "test",
      "price": 5000,
      "calories": 10,
      "eggless": "false",
      "date": "2017-09-09"
    }, {
      "title": "Cinnamon Sugar Fried Apples",
      "client": "Frodo Baggins",
      "price": 1100,
      "calories": 1997.07,
      "eggless": true,
      "date": "2017-07-06"
    }, {
      "title": "Cinnamon, Apple, Oatmeal Cake",
      "client": "Bruce Banner",
      "price": 390,
      "calories": 2007.07,
      "eggless": false,
      "date": "2017-07-09"
    }, {
      "title": "Cinnamon, Apple, Oatmeal Cake",
      "client": "Bruce Banner",
      "price": 390,
      "calories": 2007.07,
      "eggless": false,
      "date": "2017-07-09"
    }, {
      "title": "Chocolate Pancakes With Fruits",
      "client": "Bilbo Baggins",
      "price": 300,
      "calories": 1997.07,
      "eggless": true,
      "date": "2017-07-04"
    }, {
      "title": "Chocolate Pancakes With Fruits",
      "client": "Bilbo Baggins",
      "price": 300,
      "calories": 1997.07,
      "eggless": true,
      "date": "2017-07-04"
    }, {
      "title": "Cinnamon-Apple Bread",
      "client": "Tony Stark",
      "price": 250,
      "calories": 1500,
      "eggless": true,
      "date": "2017-07-08"
    }, {
      "title": "Cinnamon-Apple Bread",
      "client": "Tony Stark",
      "price": 250,
      "calories": 1500,
      "eggless": true,
      "date": "2017-07-08"
    }, {
      "title": "Pecan Tart",
      "client": "Scrats Squirrel",
      "price": 210,
      "calories": 1999,
      "eggless": true,
      "date": "2017-07-08"
    }, {
      "title": "Pecan Tart",
      "client": "Scrats Squirrel",
      "price": 210,
      "calories": 1999,
      "eggless": true,
      "date": "2017-07-08"
    }, {
      "title": "Cinnamon Sugar Fried Apples",
      "client": "Frodo Baggins",
      "price": 200,
      "calories": 1997.07,
      "eggless": true,
      "date": "2017-07-06"
    }];
    
    let column = "title";
    let sortOrder = "sort-asc";
    if ($.isNumeric(result[0][column])) {
      result.sort(function(first, second) {
        if (sortOrder === "sort-asc") return first[column] - second[column];
        else if (sortOrder === "sort-desc") return second[column] - first[column]; //first[column] < second[column];
      });
    } else {
      if (sortOrder === "sort-asc") result.sort();
      else if (sortOrder === "sort-desc") result.sort().reverse();
    }
    console.log(result);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

  • jQuery 与它有什么关系..?您可以为此使用lodash 库(参见orderBy 方法)
  • 那是因为我在一个带有 jquery 的脚本中实现了这个。 Javascript也很好

标签: javascript jquery arrays sorting


【解决方案1】:

你应该使用String.localeCompare

else {
    result.sort(function (first, second) {
        if (sortOrder === "sort-asc") return first[column].localeCompare(second[column]);
        else if (sortOrder === "sort-desc") return second[column].localeCompare(first[column]); //first[column] < second[column];
    });
}
console.log(result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多