Open haizhilin2013 opened 5 years ago
function removeDuplicates(arr) {
let resArr = []
arr.map((item) => {
if (Array.isArray(item)) {
resArr.push(removeDuplicates(item))
} else {
if (!resArr.includes(item)) {
resArr.push(item)
}
}
})
return resArr
}
let res = removeDuplicates([1,1, 3, 4, 6, 6, 4, 5, 3, [2, 3, 4, 2, 3, 4, 2, 3, 4, [1,1,2,2]]])
console.log(res)
一维数组
var target=Array.from(new Set(arr))
多维数组
先降维度,再使用Set方法
function flat(arr, newArr){ arr.forEach(item => { if({}.toString.call(item) === '[object Array]'){ flat(item, newArr); }else{ if(newArr.indexOf(item) === -1){ newArr.push(item); } } }) }
function flatArr(arr){ let newArr = []; flat(arr, newArr); return newArr; }
console.log(flatArr([1,2,3,4,[1,2,3],4,[a,b,5,[4,5,6],[1,2]]]))
。。。人家让你们去重,谁让你们降维了,题目要求难道不是返回一个和原数组结构相同的,去重后的数组吗? function deSameElement(arr, resMap = {}) { return arr.reduce((acc, cur) => { let res = null; if (Array.isArray(cur)) { res = deSameElement(cur, resMap); if (Array.isArray(res) && res.length > 0) { acc.push(res); } } else { if (!resMap[cur]) { res = cur; resMap[cur] = true; acc.push(res); } } return acc; }, []); }
let testArr = [ [1, 2, 3, 4, 5, 6], [2, 5, 7, 9, 4, 3], 10, 5, 8, [2, 3, 3], 4, 3, 9, ];
console.log(deSameElement(testArr)); // [ [ 1, 2, 3, 4, 5, 6 ], [ 7, 9 ], 10, 8 ]
function arrayFlat(arr) { return Array.from(new Set(arr.flat(Infinity))) }
第15天 写一个数组去重的方法(支持多维数组)