JavaScript:将数组中的所有重复值更改为0

我有一个包含重复值的数组

let ary = [5, 1, 3, 5, 7, 8, 9, 9, 2, 1, 6, 4, 3];

我想将重复值设置为 0:

[0, 0, 0, 0, 7, 8, 0, 0, 2, 0, 6, 4, 0]

可以找出重复值,但我想将重复值改为0,有什么更好的方法吗?

let ary = [5, 1, 3, 5, 7, 8, 9, 9, 2, 1, 6, 4, 3];

Array.prototype.duplicate = function () {
  let tmp = [];
  this.concat().sort().sort(function (a, b) {
    if (a == b && tmp.indexOf(a) === -1) tmp.push(a);
  });
  return tmp;
}

console.log(ary.duplicate()); // [ 1, 3, 5, 9 ]

// ? ary = [0, 0, 0, 0, 7, 8, 0, 0, 2, 0, 6, 4, 0];

回答

您可以使用indexOf()lastIndexOf()方法来解决您的问题。

const array = [5, 1, 3, 5, 7, 8, 9, 9, 2, 1, 6, 4, 3];
const ret = array.map((x) =>
  array.indexOf(x) !== array.lastIndexOf(x) ? 0 : x
);
console.log(ret);


以上是JavaScript:将数组中的所有重复值更改为0的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>