【问题标题】:JSON sort by value jQuery or JSJSON 按值排序 jQuery 或 JS
【发布时间】:2019-07-30 05:12:28
【问题描述】:

在标记这个重复之前,请知道我在这里尝试了所有可能的答案。

我得到这样的输出,

我试过这些,

var jsonObjSeat = jQuery.parseJSON(seatJson);

//jsonObjSeat.sort(function (a, b) {
//    return a.seats.number.localeCompare(b.seats.number);
//});

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

people = sortByKey(jsonObjSeat, 'seats.number');

我需要 1A,1C..2A,2C ..etc

在这里拉小提琴, https://jsfiddle.net/h9548dLc/8/

【问题讨论】:

  • 也添加你的json
  • 在上面添加了小提琴,如果你错过了,这里jsfiddle.net/h9548dLc/8
  • @sajanyamaha,number 对象的 number 字段是一个字符串。在字符串中,"10" 的值小于"2"
  • ok @Rai 也许我可以拆分并将其转换为数字然后排序,但是字母排序呢?
  • @sajanyamaha,我对 javascript 伙伴的经验并不是很丰富。但从逻辑上讲,您可能可以这样做:使用sort() 两次。 (i)*应用拆分后,根据数字部分排序。 *(ii)*使用 *(i) 中获得的列表并应用基于字母的排序。我不知道字母数字排序是否有任何直接功能,但我觉得这可能是暂时的,直到知道更好的人给出有价值的答案。

标签: jquery arrays json sorting


【解决方案1】:

使用localeCompare(compareString[, locales[, options]]) 和选项{numeric: true}

function sortBySeat(array) {
  return array.sort(function(a, b) {
    return a.seats.number.localeCompare(b.seats.number, 'en', {
      numeric: true
    });
  });
}

小提琴here

MDN 网络文档here

【讨论】:

    猜你喜欢
    • 2012-11-20
    • 2019-06-09
    • 1970-01-01
    • 2021-12-17
    • 2020-11-18
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多