数据处理 | 数组去重

方式1:展平数组再求和

数组扁平化方式有很多,请参照:数据处理 | 数组扁平化(3种)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function fn(array) {
// 先将数组展平
const newArray = array.flat(Infinity);

// 这里我利用reduce求和
return newArray.reduce((p, c) => p+c, 0);
}

// test
const arr = [
5,
7,
[ 4, [2], 8, [1,3], 2 ],
[ 9, [] ],
1,
8
];
console.log(fn(arr)); // 50

方式2:递归求和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function fn(array) {
let sum = 0;

for (let item of array) {
sum += Array.isArray(item) ? fn(item) : item;
}
return sum;
};

// test
const arr = [
5,
7,
[ 4, [2], 8, [1,3], 2 ],
[ 9, [] ],
1,
8
];
console.log(fn(arr)); // 50

方式3: 同2但用reduce实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function fn(array) {
return array.reduce((acc, cur) => {
return acc += Array.isArray(cur) ? fn(cur) : cur;
}, 0)
}

// test
const arr = [
5,
7,
[ 4, [2], 8, [1,3], 2 ],
[ 9, [] ],
1,
8
];
console.log(fn(arr)); // 50