//es6
const uniqueArr = (arr) => [
...new Set(
arr.reduce(
(prev, cur) =>
Array.isArray(cur) ? prev.concat(...uniqueArr(cur)) : prev.concat(cur),
[]
)
)
];
// ES5
const uniqueArrES5 = (arr) => {
const unique = [];
const flattedArr = arr.reduce(
(prev, cur) =>
Array.isArray(cur)
? prev.concat(uniqueArrES5(cur))
: prev.concat(cur),
[]
);
while (flattedArr.length > 0) {
const head = flattedArr.shift();
if (flattedArr.indexOf(head) < 0) {
unique.push(head);
}
}
return unique;
};
console.log(uniqueArr([1, 2, 3, 4, 4, 3, 2, 1, 1, 2, 3, 4, 4, 3, 2, 1, 5, 6]));
console.log(uniqueArr([1, 2, 3, 4, 4, 3, 2, 1, [1, 2, 3, [4, 3, 2, 1]]]));
console.log(
uniqueArr([
1,
2,
3,
[1, 2, 3, [1, 2, 3, [1, 2, 3, [1, 2, 3, [1, 2, 3, [1, 2, 3]]]]]]
])
);
第2天 写一个数组去重的方法(支持多维数组)
最新推荐文章于 2024-07-06 16:47:02 发布