亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將多個元素移動到數組的開頭?

如何將多個元素移動到數組的開頭?

慕勒3428872 2021-06-16 13:45:31
我有一個將數組和字符串作為參數的函數。任務是檢查字符串是否出現在函數內,以及是否移到數組的第一個位置。function moveToFirstPlace(['pizza', 'Pasta', 'Burger', 'PiZZa', 'pizzA'],'pizza')在這個例子中,無論大寫還是小寫,所有比薩都必須移動到數組的開頭。
查看完整描述

3 回答

?
慕蓋茨4494581

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'));


查看完整回答
反對 回復 2021-06-18
?
肥皂起泡泡

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);

兩種解決方案都具有線性時間復雜度。


查看完整回答
反對 回復 2021-06-18
?
慕后森

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'))


查看完整回答
反對 回復 2021-06-18
  • 3 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號