🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
<div id="div11"><h3> <font color=red /> 11,js 实现数组扁平化 </font> <h3></div> ```javascript // 扁平化简单的二维数组: 1, join方法, 2, tostring方法 const arr = [11, [22, 33], [44, 55], 66]; const flatArr = arr.join().split(','); // ["11", "22", "33", "44", "55", "66"] const flatArr = arr.toString().split(','); // ["11", "22", "33", "44", "55", "66"] // 3, flat() 方法 // flat和flatMap方法为ES2019(ES10)方法 [1, 2, [3, [4, 5]]].flat() // [1, 2, 3, [4, 5]] [1, 2, [3, [4, 5]]].flat(2) // [1, 2, 3, 4, 5] [1, [2, [3]]].flat(Infinity) // [1, 2, 3] // 4, 递归 方法 function flatten(arr){ var res = []; for(var i=0;i<arr.length;i++){ if(Array.isArray(arr[i])){ res = res.concat(flatten(arr[i])); }else{ res.push(arr[i]); } } return res; } ``` <div id="div12"><h4> <font color=red /> 12, 一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组 </font> <h3></div> ```javascript var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10]; // 方法一 console.log(Array.from(new Set(arr.flat(Infinity))).sort((a, b) => a - b)) // 方法二 console.log(Array.from(new Set(arr.toString().split(','))).map(Number).sort((a, b) => a - b)) // 方法三 // 第一步:扁平化 let newArr = []; function flat(originArr) { if ({}.toString.call(originArr) === '[object Array]') { for (let i of originArr) { if ({}.toString.call(i) === '[object Array]') { arguments.callee(i) } else { newArr.push(i) } } } return newArr; } console.log(flat(arr)) // 第二步:去重 var newArr1 = []; for (let i of newArr) { if (!newArr1.includes(i)) newArr1.push(i); } // 第三步:排序 可以采用相关算法处理 console.log(newArr1.sort((a, b) => a - b)) ```