js對象數組多字段排序


來源:js對象數組按照多個字段進行排序

一、數組排序

Array.sort()方法可以傳入一個函數作為參數,然后依據該函數的邏輯,進行數組的排序。
一般用法:(數組元素從小大進行排序)

  var a = [9, 6, 5, 7, 11, 52, 15];
  a.sort((a, b) => a-b)
  // (7) [5, 6, 7, 9, 11, 15, 52]

sort()方法,接收了一個函數作為參數時,排序主要根據傳入函數的返回值是否大於0進行排序。

1)當 a - b < 0 時, 則 a 元素排在 b 元素的前面。
2)當 a - b = 0 時, a , b 元素的位置不變。
3)當 a - b > 0 是, 則 a 元素排在 b 元素的后面。

以上是針對單純的整數數組,但是需求往往肯定不會是這么簡單。所以如果當數組的元素為對象時,則可能需要根據對象的屬性進行排序,此時就會涉及到多條件排序。

二、數組對象多條件排序

如數組中的元素是obj對象,此時需要根據, age、id、name三個維度對數組進行排序。
需求如下:age小的排前面,其次 id 小的排前面,其次name小的排在前面

// 先按age排序,age相同再按id排序,id相同則再按name排序
function mysort(a,b){
  if (a.age !== b.age) return a.age < b.age ? -1 : 1
  else if (a.id !== b.id) return a.id < b.id ? -1 : 1
  else if (a.name !== b.name) return a.name < b.name ? -1 : 1
}
let arr = [
  {name:12,age:10,id:2001},
  {name:10,age:10,id:2010},
  {name:15,age:24,id:2008},
  {name:13,age:10,id:2008},
  {name:8,age:10,id:2001},
  {name:18,age:24,id:2000},
  {name:16,age:26,id:20015},
  {name:6,age:10,id:2001},
  {name:14,age:10,id:2000},
]
arr.sort(mysort)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM