【问题标题】:Jquery sort array with more objects [duplicate]具有更多对象的Jquery排序数组[重复]
【发布时间】:2021-03-16 06:57:06
【问题描述】:

我试图对包含许多对象的数组进行排序,但我可以只对第一个值进行排序。 这是我的示例代码: https://jsfiddle.net/v6wc8ufg

我正在尝试按 value1、value2、value3 执行 SQL 顺序

var myArray = [
  { id: 'a', val: '4', city: 'Spain' },
  { id: 'a', val: '1', city: 'Paris' },
  { id: 'z', val: '5', city: 'London' },
  { id: 'z', val: '4', city: 'Rome' },
  { id: 'b', val: '9', city: 'Italy' }
];

function SortByName(a, b) {
  var aName = a.id;
  var bName = b.id;
  return aName < bName ? -1 : aName > bName ? 1 : 0;
}

myArray.sort(SortByName);

【问题讨论】:

  • 您要先按id 排序,然后按val 排序吗?你可以这样做:myArray.sort((a,b) =&gt; a.id.localeCompare(b.id) || a.val - b.val)

标签: javascript jquery arrays sorting object


【解决方案1】:

你应该在排序函数返回0值的时机检查sex值,这意味着id是相同的。

  return ((aName < bName) ? -1 : ((aName > bName) ? 1 : (a.sex < b.sex) ? -1 : (a.sex > b.sex) ? 1 : 0));

【讨论】:

    【解决方案2】:

    希望这篇文章对你有帮助。

    const sortFunc = (a, b) => {
        if (a.value1 !== b.value1) return a.value1 > b.value1 ? 1 : -1;
        if (a.value2 !== b.value2) return a.value2 > b.value2 ? 1 : -1;
        ...
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-15
      • 1970-01-01
      • 2017-04-12
      • 2021-08-22
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      相关资源
      最近更新 更多