3 回答
TA贡献1850条经验 获得超11个赞
您可以对数组进行排序并检查值并将这些值移到顶部。
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条经验 获得超6个赞
执行此操作的一种方法是应用于filter您的数组,一次用于识别匹配项,一次用于非匹配项。然后只需连接两个结果:
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);
这将保持匹配元素的原始顺序。请注意,它不会改变原始数组,而是返回一个新数组作为结果。
您还可以使用更实用的方法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);
两种解决方案都具有线性时间复杂度。
TA贡献1802条经验 获得超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'))
添加回答
举报