example
- 输入:
[1,'1',1]
, 则输出: [1,'1']
- 输入:
[{a: 1}, {b: 1}, {a: 1}]
, 则输出:[{a: 1}, {b: 1}]
- 输入:
[{a: 1}, {b: 1}, {a: 1}]
, 则输出:[{a: 1}, {b: 1}]
- 输入:
[{a: 1, b: 2}, {b: 1}, {b: 2, a: 1}]
, 则输出:[{a: 1, b: 2}, {b: 1}]
- 输入:
[[1, {a: 1}], [2], [3], [1, {a: 1}]]
, 则输出: [[1, {a: 1}], [2], [3]]
参考1
function unique(arr) {
const isEqual = (a, b) => {
if (Array.isArray(a) && Array.isArray(b)) {
return a.length === b.length? a.every((item, index) => isEqual(item, b[index])) : false;
}
if (typeof a === 'object' && typeof b === 'object') {
return Object.keys(a).length === Object.keys(b).length ? Object.keys(a).every((key) => isEqual(a[key], b[key])) : false;
}
return a === b;
};
return arr.reduce((accumulator, current) => {
if (accumulator.findIndex(item => isEqual(current, item)) === -1) {
accumulator.push(current);
}
return accumulator;
}, []);
}