來源: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)

