具有更多对象的Jquery排序数组[重复]

Posted

技术标签:

【中文标题】具有更多对象的Jquery排序数组[重复]【英文标题】:Jquery sort array with more objects [duplicate] 【发布时间】: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) 【参考方案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;

【讨论】:

以上是关于具有更多对象的Jquery排序数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery或javascript对对象数组进行排序[重复]

javscript巧用对象特性去掉数组重复项并排序

为啥数字数组,更多数据排序比对象数组更快,Javascript中的数据更少?

jQuery对象数组排序

jQuery / Javascript从对象数组中删除一个对象[重复]

具有对象排序的无效比较器[重复]