数组去重与数组扁平化
生活随笔
收集整理的這篇文章主要介紹了
数组去重与数组扁平化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、數(shù)組去重
(1)indexOf()
function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1){res.push(item);}})return res; }
二、數(shù)組扁平化處理可以用reduce
例:實現(xiàn)一個flatten方法,使得輸入一個數(shù)組,該數(shù)組里面的元素也可以是數(shù)組,該方法會輸出一個扁平化的數(shù)組。
arr=[[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
console.log([1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]);
(1)遞歸
function flatter(arr){var res=[];arr.map(function(item){if(Array.isArray(item)){res=res.concat(flatter2(item));}else{res.push(item);}})return res; }
(1)indexOf()
function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1){res.push(item);}})return res; }
(2)Set結構
var set=new Set(arr); Array.from(set);(3)filter過濾
function only(arr){var res=[];res=arr.filter(function(item,index,self){if(self.indexOf(item)==index){return item;}})return res; }(4)reduce()
function only(arr){var res=[];return arr.reduce((pre,cur)=>{if(!pre.includes(cur)){return pre.concat(cur);}else{return pre;}},[]) }(5)lastIndexOf()?
function only(arr){var res=[];arr.forEach(function(item){if(arr.indexOf(item)==arr.lastIndexOf(item)){res.push(item);}})return res; }?
二、數(shù)組扁平化處理可以用reduce
例:實現(xiàn)一個flatten方法,使得輸入一個數(shù)組,該數(shù)組里面的元素也可以是數(shù)組,該方法會輸出一個扁平化的數(shù)組。
arr=[[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
console.log([1,2,2,3,4,5,5,6,7,8,9,11,12,12,13,14,10]);
(1)遞歸
function flatter(arr){var res=[];arr.map(function(item){if(Array.isArray(item)){res=res.concat(flatter2(item));}else{res.push(item);}})return res; }
(2)reduce()
function flatten(arr){return arr.reduce(function(pre,item){return pre.concat(Array.isArray(item)?flatten(item):item);},[]); }?
(3)toString()+spilt()+ParseInt()
調用數(shù)組的toString()方法,將數(shù)組變成字符串,然后再用split()分割還原成數(shù)組
function flatten(arr){return arr.toString().split(',').map(function(item){return parseInt(item);}) }function flatten(arr){return arr.join(',').split(',').map(function(item){return parseInt(item);})//?用join()方法也可以轉成字符串 }?缺點:只適用于數(shù)組元素均為數(shù)字的情況。
?
(4)擴展運算符
ES6的擴展運算符能將二維數(shù)組變?yōu)橐痪S。
[ ].concat(...[1,2,3,[4,5]])——>[1,2,3,4,5]
arr.some()只要有一個符合條件就返回true,所以循環(huán)遍歷判斷元素是否包含數(shù)組,如果有就使用一次擴展運算符。
function flatten(arr) {while(arr.some(item=>Array.isArray(item))) {arr = [].concat(...arr);}return arr; }?
轉載于:https://www.cnblogs.com/xiaoan0705/p/11263278.html
總結
以上是生活随笔為你收集整理的数组去重与数组扁平化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++11 移动语义move seman
- 下一篇: 带着问题读CLR via C#(六)常量