1、数组去重
1.1 使用Set去重
function unique(arr) {
return [...new Set(arr)]
}
const arr = [1, 2, 3, 4, 5, 6, 1]
console.log(unique(arr))
1.2 使用filter去重
function unique(arr) {
return arr.filter((item, index) => {
return arr.indexOf(item) === index
})
}
const arr = [1, 2, 3, 4, 5, 6, 1]
console.log(unique(arr))
2、数组扁平化
1.1 使用some循环
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
return arr
}
const array = [1, 2, [3, 4, [5]]]
console.log(flatten(array))
1.2 循环+递归
function flatten(arr) {
var result = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]))
} else {
result.push(arr[i])
}
}
return result;
}
1.3 reduce
function flatten(arr) {
return arr.reduce(function(prev, next){
return prev.concat(Array.isArray(next) ? flatten(next) : next)
}, [])
}
1.4 flat
[1, [2, [3]]].flat(2) // [1, 2, 3]