📜  数组中非重复(不同)元素的乘积(1)

📅  最后修改于: 2023-12-03 14:54:59.975000             🧑  作者: Mango

数组中非重复(不同)元素的乘积

在处理一个数组时,我们有时需要计算其中非重复(不同)元素的乘积。这个问题可以用多种方法解决,下面简单介绍几种常用的方法。

方法一:使用Set

使用Set可以去除重复元素,从而得到非重复元素,再遍历数组求乘积。

function multiplyNonDuplicates(arr) {
  const set = new Set(arr);
  let product = 1;
  for (let num of set) {
    product *= num;
  }
  return product;
}
方法二:使用reduce和includes

reduce可以用于遍历数组并累加结果,使用includes可以检查当前元素是否已在之前遍历中出现过。

function multiplyNonDuplicates(arr) {
  return arr.reduce((product, num) => {
    if (!arr.slice(0, arr.indexOf(num)).includes(num)) {
      product *= num;
    }
    return product;
  }, 1);
}
方法三:使用map和filter

使用map将每个元素映射为一个对象,包含元素本身和此元素在数组中的索引。使用filter筛选出所有索引与元素本身第一次出现时索引相同的元素,再遍历这些元素求乘积。

function multiplyNonDuplicates(arr) {
  const mapped = arr.map((num, index) => ({ num, index }));
  const filtered = mapped.filter((obj) => obj.index === arr.indexOf(obj.num));
  let product = 1;
  for (let obj of filtered) {
    product *= obj.num;
  }
  return product;
}

注意:以上三种方法中,方法一最简洁,但方法二和方法三更能提高代码可读性,特别适合多人协作的项目开发。