-
慕盖茨4494581
您可以对数组进行排序并检查值并将这些值移到顶部。function moveToFirstPlace(array, value) { return array.sort((a, b) => (b.toLowerCase() === value) - (a.toLowerCase() === value));}console.log(moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'],'pizza'));
-
肥皂起泡泡
执行此操作的一种方法是应用于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);两种解决方案都具有线性时间复杂度。
-
慕后森
您可以使用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'))