/*
* @Descripttion: 将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组
* @version:
* @Author: ZhaoBingyu
* @Date: 2020-04-17 20:44:31
* @LastEditors: ZhaoBingyu
* @LastEditTime: 2020-04-17 23:22:28
*/
let arr = [[1,2,2],[3,4,5,5],[6,7,8,9,[11,12,[12,13,[14]]]],10]
/**
* @descripttion: 数组扁平化
* @param {type}
* @return: 新数组
*/
function flatArr1(arr){
if(Object.prototype.toString.call(arr) !== '[object Array]'){
console.error('输入参数要求微数组类型!')
return
}
let newarr = arr.flat(Infinity)
return newarr
}
console.log('flatArr1:',flatArr1(arr))
function flatArr2(arr){
let newarr = arr
while(newarr.some(Array.isArray)){
newarr = [].concat(...newarr)
}
return newarr
}
console.log('flatArr2',flatArr2(arr))
function flatArr3(arr){
let newarr = []
for(const item of arr){
item instanceof Array ? newarr = newarr.concat(flatArr3(item)) : newarr.push(item)
}
return newarr
}
console.log('flatArray3:', flatArr3(arr))
function flatArr4(arr){
let newarr = [JSON.stringify(arr).replace(/\[|\}/g,'')]
return newarr
}
console.log('flatArr4:', flatArr3(arr))
/**
* @descripttion: 数组去重
* @param {type}
* @return: 新数组
*/
function uniqArr1(arr){
let newarr = Array.from(new Set(arr))
return newarr
}
console.log('uniqArr1', uniqArr1(flatArr3(arr)))
function uniqArr2(arr){
let newarr = [...new Set(arr)]
return newarr
}
console.log('uniqArr2', uniqArr2(flatArr3(arr)))
function uniqArr3(arr){
let temp = {}
let newarr = []
for(let item of arr){
if(!temp[item]){
temp[item] = '1'
newarr.push(item)
}
}
return newarr
}
console.log('uniqArr3', uniqArr3(flatArr3(arr)))
function uniqArr4(arr){
let newarr = []
for(let i=0; i<arr.length; i++){
if(newarr.indexOf(arr[i])===-1){
newarr.push(arr[i])
}
}
return newarr
}
console.log('uniqArr4', uniqArr4(flatArr3(arr)))
/**
* @descripttion: 数组升序
* @param {type}
* @return: 新数组
*/
function sortArr1(arr){
let newarr = []
newarr = arr.sort((a,b)=>{
return a-b
})
return newarr
}
console.log('sortArr1', sortArr1(uniqArr4(flatArr3(arr))))
function sortArr2(arr){
let newarr = arr
let len = newarr.length
for(let i=0; i<len; i++){
for(let j=0; j<len-i-1; j++){
if(newarr[j]>newarr[j+1]){
let temp = newarr[j]
newarr[j] = newarr[j+1]
newarr[j+1] = temp
}
}
}
return newarr
}
console.log('sortArr2', sortArr2(uniqArr4(flatArr3(arr))))
function sortArr3(arr){
let newarr = arr
let len = arr.length
let min = null
let temp = null
for(let i=0; i<len-1; i++){
min = i
for(let j=i+1; j<len; j++){
if(newarr[j]<arr[min]){
min = j
}
}
temp = newarr[i]
newarr[i] = newarr[min]
newarr[min] = temp
}
return newarr
}
console.log('sortArr3', sortArr3(uniqArr4(flatArr3(arr))))
/**
* 1.数组扁平化
* 2.数组去重
* 3.数组排序
*/
function formatArr(arr){
let newarr = [...new Set(arr.flat(Infinity))].sort((a,b)=>a-b)
return newarr
}
console.log('formatArr:', formatArr(arr))