compareFunction 可能需要對(duì)元素做多次映射以實(shí)現(xiàn)排序盟蚣,尤其當(dāng) compareFunction 較為復(fù)雜友酱,且元素較多的時(shí)候劈伴,某些 compareFunction 可能會(huì)導(dǎo)致很高的負(fù)載。使用 map 輔助排序?qū)?huì)是一個(gè)好主意桥温∑私基本思想是首先將數(shù)組中的每個(gè)元素比較的實(shí)際值取出來(lái)烧给,排序后再將數(shù)組恢復(fù)。
// 需要被排序的數(shù)組
var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];
// 對(duì)需要排序的數(shù)字和位置的臨時(shí)存儲(chǔ)
var mapped = list.map(function(el, i) {
return { index: i, value: el.toLowerCase() };
})
// 按照多個(gè)值排序數(shù)組
mapped.sort(function(a, b) {
return +(a.value > b.value) || +(a.value === b.value) - 1;
});
// 根據(jù)索引得到排序的結(jié)果
var result = mapped.map(function(el){
return list[el.index];
});