2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個贊
我在這里假設(shè)“Top_Section”總是在sections 數(shù)組的第一個位置。
我還假設(shè)只有兩種優(yōu)先級類型:“Top_Section”和“Bottom_Section”
let list = [{
id: 'field1',
sections: [{
name: 'Top_Section',
priority: 3
},
{
name: 'Bottom_Section',
priority: 3
}
]
},
{
id: 'field2',
sections: [{
name: 'Top_Section',
priority: 2
},
{
name: 'Bottom_Section',
priority: 4
}
]
},
{
id: 'field3',
sections: [{
name: 'Top_Section',
priority: 1
},
{
name: 'Bottom_Section',
priority: 1
}
]
},
{
id: 'field4',
sections: [{
name: 'Top_Section',
priority: 4
},
{
name: 'Bottom_Section',
priority: 2
}
]
}
];
function sortBy(priorityName) {
let priorityPosition = (priorityName == 'Top_Section') ? 0 : 1;
return (a, b) => {
return a['sections'][priorityPosition].priority - b['sections'][priorityPosition].priority;
}
}
console.log( list.sort(sortBy('Top_Section')) );

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊
讓我們創(chuàng)建一個比較器
function compare(a, b) {
var sumA = 0;
var sumB = 0;
for (var section of a.sections) sumA += section.priority;
for (var section of b.sections) sumB += seciton.priority;
return sumB - sumA;
}
arr.sort(compare);
如果第一個參數(shù)較大,比較器返回正數(shù),如果第二個參數(shù)較大,則比較器返回負(fù)數(shù),如果它們相等,則返回 0。我假設(shè)優(yōu)先級總和的數(shù)值越小,項目越大。
添加回答
舉報