ES6提供的Array.prototype.flat方法
let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7];
arr = arr.flat(Infinity);
arr = Array.from(new Set(arr)).sort((a, b) => a-b)
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 10, 12, 16]
toString()方法
let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7];
arr = arr.toString().split(',').map(item => Number(item))
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 10, 12, 16]
JSON.stringify()方法
let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7];
arr = JSON.stringify(arr).replace(/(\[|\])/g, '').split(',').map(item => Number(item))
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 10, 12, 16]
数组中的some()方法
let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7];
while(arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 10, 12, 16]
递归
let arr = [10,[1,2],[12,[3,4,[5,6,16]],6,6],7];
~function () {
function myFlat () {
let res = [], _this = this;
let fn = (arr) => {
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
if (Array.isArray(item)) {
fn(item)
continue
}
res.push(item)
}
}
fn(this)
return res
}
Array.prototype.myFlat = myFlat
}()
arr = arr.myFlat()
arr = Array.from(new Set(arr)).sort((a, b) => a-b)
console.log(arr) //[1, 2, 3, 4, 5, 6, 7, 10, 12, 16]