3 回答

TA貢獻1850條經(jīng)驗 獲得超11個贊
您可以對數(shù)組進行排序并檢查值并將這些值移到頂部。
function moveToFirstPlace(array, value) {
return array.sort((a, b) => (b.toLowerCase() === value) - (a.toLowerCase() === value));
}
console.log(moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'],'pizza'));

TA貢獻1829條經(jīng)驗 獲得超6個贊
執(zhí)行此操作的一種方法是應(yīng)用于filter您的數(shù)組,一次用于識別匹配項,一次用于非匹配項。然后只需連接兩個結(jié)果:
function moveToFirstPlace(arr, str) {
str = str.toLowerCase();
const matches = arr.filter(elem => elem.toLowerCase() === str);
const misses = arr.filter(elem => elem.toLowerCase() !== str);
return matches.concat(misses);
}
var arr = moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'],'pizza');
console.log(arr);
這將保持匹配元素的原始順序。請注意,它不會改變原始數(shù)組,而是返回一個新數(shù)組作為結(jié)果。
您還可以使用更實用的方法reduce:
function moveToFirstPlace(arr, str) {
str = str.toLowerCase();
return arr.reduce((acc, elem) => (acc[+(elem.toLowerCase() === str)].push(elem), acc), [[], []])
.reduce((a, b) => a.concat(b));
}
var arr = moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'],'pizza');
console.log(arr);
兩種解決方案都具有線性時間復(fù)雜度。

TA貢獻1802條經(jīng)驗 獲得超5個贊
您可以使用push,并unshift伴隨著toLowerCase()建立一個新的陣列。
function moveToFirstPlace(items, key) {
let result = []
items.forEach(itm => {
itm.toLowerCase() == key.toLowerCase() ? result.unshift(itm) : result.push(itm)
})
return result
}
console.log(moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'], 'pizza'))
添加回答
舉報