javascript基础知识之多维数组扁平化去重排序

var arr = [1,2,3,4,5,[1,2,6,8]]

=> [1,2,3,4,5,6,8]

多维数组扁平化的核心思路是迭代与递归

关键词flat,forEach,reduce,map

复制代码
var arr = [1,2,3,4,5,[1,2,6,8]]

// js方法实现
 
var flatArr = arr.toString().split(",") //扁平
function unlink(arr) { //去重
    return arr.filter(function (item, index, arr) {
        //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
        return arr.indexOf(item, 0) === index;
    });
}
var filterArr = unlink(flatArr)
function systemSort(arr) { //排序
   return arr.sort(function(a, b) {
       return a - b
   })
}
var sortArr = systemSort(filterArr)
console.log('sortArr',sortArr)


// es6方法1
function getFlatSort(arr) {
  return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => { return a - b })
}
//不排序
//newArr = Array.from( new Set(arr.flat(Infinity)) )
console.log(getFlatSort(arr))
//es6方法2
let array = arr.flat(Infinity)
let arrALL = array.filter(function(item,index){
    return array.indexOf(item)==index
  })
console.log(arrALL)



//多维数组扁平化

function flatten(arr){
while(arr.some(item => Array.isArray(item))){
arr = [].concat(...arr);
}
return arr;
}


let oldArr = [1,[2,3],[3,4,5]]
let newArr = flatten(oldArr);
console.log(newArr)

//多维数组扁平化
let arr = [1,[2,[3,[4,5]]],[6,[7,[8,9]]]]
let newArr = []
const decending = (arr) => {
  if (arr === null) {
    return arr
  }
  arr.forEach((item)=>{
    if(Array.isArray(item)){
      decending(item)
    }else{
      newArr.push(item)
    }
  })
}

decending(arr)
console.log(newArr)



//lodash.js实现 let lodaArry = _.uniq(_.flattenDeep(arr)) console.log(_.uniq([2, 1, 2]))
复制代码

 

posted @   知兮  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示