已知如下数组:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组 依题意可得:1.
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatAll(arr) {
// toString方法将数组转化成字符串'1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10'
// split(',')方法将字符串转换成数组["1", "2", "2", "3", "4", "5", "5", "6", "7", "8", "9", "11", "12", "12", "13", "14", "10"]
// sort 方法排序
// map(Number) 方法将每个元素映射成数字
console.log(arr.toString().split(','))
var arr2 = arr.toString().split(',').sort((a, b) => a - b).map(Number)
// set结构去重
// Array.from 方法通过类数组结构创建数组
return Array.from(new Set(arr2));
}
console.log(flatAll(arr))
2.利用es6数组降维方法
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
function flatAll(arr) {
while (arr.find(item => typeof item === 'object')) {
arr = arr.flat()
}
arr = arr.sort((x, y) => x - y)
return Array.from(new Set(arr));
}
console.log(flatAll(arr));