我有一個這樣的物件:
var obj = [
{ name: "name1", type: 4 },
{ name: "name6", type: 2 },
{ name: "name2", type: 5 },
{ name: "name3", type: 1 },
{ name: "name5", type: 2 },
{ name: "name4", type: 3 }
]
我想回傳一個排序陣列,以便在陣列的頂部有型別為 2 或 3 的物件,按名稱欄位進一步排序:
var obj = [
{ name: "name4", type: 3 }
{ name: "name5", type: 2 },
{ name: "name6", type: 2 },
{ name: "name1", type: 4 },
{ name: "name2", type: 5 },
{ name: "name3", type: 1 }
]
我該如何實施?
ps 如果型別是列舉,我還想查看一個變體(例如,
export enum Types {
Type0 = 0,
Type1 = 1,
.....}
)
uj5u.com熱心網友回復:
您需要首先對型別是否為2or之一進行排序3(您可以通過檢查該type值是否存在于陣列中來做到這一點[2, 3];我們將其排序為降序排序,因為我們true首先需要結果),然后是名稱:
var obj = [
{ name: "name1", type: 4 },
{ name: "name6", type: 2 },
{ name: "name2", type: 5 },
{ name: "name3", type: 1 },
{ name: "name5", type: 2 },
{ name: "name4", type: 3 }
]
const firstTypes = [2, 3]
obj.sort((a, b) =>
firstTypes.includes(b.type) - firstTypes.includes(a.type) ||
a.name.localeCompare(b.name)
)
console.log(obj)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/524708.html
