📅  最后修改于: 2023-12-03 14:54:59.975000             🧑  作者: Mango
在处理一个数组时,我们有时需要计算其中非重复(不同)元素的乘积。这个问题可以用多种方法解决,下面简单介绍几种常用的方法。
使用Set可以去除重复元素,从而得到非重复元素,再遍历数组求乘积。
function multiplyNonDuplicates(arr) {
const set = new Set(arr);
let product = 1;
for (let num of set) {
product *= num;
}
return product;
}
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筛选出所有索引与元素本身第一次出现时索引相同的元素,再遍历这些元素求乘积。
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;
}
注意:以上三种方法中,方法一最简洁,但方法二和方法三更能提高代码可读性,特别适合多人协作的项目开发。