var arr=[[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,13,[14]]]]];
方案一: es6的array.flat与Set结合再sort
//扁平化
let flatArr=arr.flat(4); //[1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14]
//去重
let disArr=Array.from(new Set(flatArr)); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14]
//升序
let result=disArr.sort((a,b)=>{return a-b}); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14]方案二:[].concat(...arr)与set 结合再sort
function flatten(arr){
while(arr.some(item=>Array.isArray(item))){
arr=[].concat(...arr);
}
return arr
}
flatten(arr);
Array.from(new Set(flatten(arr))).sort((a,b)=>a-b方案三:递归(Es6简写)
const flatten=arr=>arr.reduce(acc,cur)=>(
Array.isArray(cur)?
[...acc,...flatten(cur):
[...acc,cur],[])
)方案四:array=>string=>[string]=>[number]=>[sort]
var arr1=(arr.join(',').split(',').map(item=>Number(item)));
Array.from(new Set(arr1))方案五:正则替换[]
function flatten(arr){
return Array.from(new Set(
JSON.parse('['+JSON.stringify(arr).replace(/\[|\]/g,'')+']')
))
}
flatten(arr)