为了账号安全,请及时绑定邮箱和手机立即绑定

用不同的值替换数组中的重复项

用不同的值替换数组中的重复项

偶然的你 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 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信