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

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

用不同的值替換數組中的重復項

用不同的值替換數組中的重復項

偶然的你 2022-11-27 16:10:53
我想用不同的值替換重復項。例如arr = [1,1,1,1,2,2,2,3],我想用R所以結果看起來像這樣 arr = [1,R,R,R,2,R,R,3]現在我正在使用這種方法:    arr = [1,1,1,1,2,2,2,3]    let previous = 0;    let current = 1;    while (current < arr.length) {        if (arr[previous] === arr[current]) {            arr[current] = 'R';            current += 1;        } else if (arr[previous] !== arr[current]) {            previous = current;            current += 1;        }    }我想知道是否有不同的方法來實現這一目標。例如使用 Lodash (uniqwith, uniq)。謝謝
查看完整描述

3 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

這是我會怎么做它看看當前元素是否是具有當前值的數組的第一個元素,如果不是則替換它


在非常大的陣列上可能需要一些時間


const input = [1,1,1,1,2,2,2,3]

let output = input.map(

  (el, i) => input.indexOf(el) === i ? el : 'R'

)

console.log(output)


查看完整回答
反對 回復 2022-11-27
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

您可以關閉 aSet并檢查是否已經看到該值。


let array = [1, 1, 1, 1, 2, 2, 2, 3],

    result = array.map((seen => v => seen.has(v) ? 'R' : (seen.add(v), v))(new Set));


console.log(...result);


檢查先前值的方法


let array = [1, 1, 1, 1, 2, 2, 2, 3],

    result = array.map((v, i, { [i - 1]: l }) => l === v ? 'R' : v);


console.log(...result);


查看完整回答
反對 回復 2022-11-27
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

這實際上通過使用集合 ( Set ) 非常簡單。


const initialArray = [1,1,1,1,2,2,2,3];

const valuesSet = new Set();


const newArray = initialArray.map((value) => {

    if (valuesSet.has(value)) {

        return 'R';

    } else {

        valuesSet.add(value);

        return value;

    }

});


查看完整回答
反對 回復 2022-11-27
  • 3 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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