数据扁平化之数组处理
**假设有一个数组
const arr = [1,[2,[3,[4,5]]],6];
如何将其从多维数组变为一维数组
方法一:
使用flat()方法
const res1 = arr.flat(Infinity);
方法二
使用reduce
const flatten = arr =>{
return arr.reduce((pre,cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
},[])
}
const res4 = flatten(arr)
数组去重
假设有数组
var arr = [1,1,'1',17,true, true,false,false,'a',{}];
需求:去除重复的数据
方法一:
原理:Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
使用Set
const res1 = Array.from(new Set(arr));
console.log(res1)
// 第二种双层for循环
// function arrqc(arr){
// let len = arr.length;
// for(var i = 0; i < len; i++){
// for(let j = i;j< len; j++){
// if(arr[i] === arr[j]){
// arr.splice(j,1);
// len--;
// j--;
// }
// }
// }
// return arr;
// }
// 第三种:includes方法
// var res3 = arrqc(arr)
// console.log(res3)
// const unique3 = arr => {
// const res = [];
// for (let i = 0 ; i < arr.length; i++){
// if(!res.includes(arr[i])) res.push(arr[i]);
// }
// console.log(res)
// return res;
// }
// 去重
// unique3(arr)
// 第四种:利用Map()
const arrqcatch = arr =>{
const map = new Map();
const res = [];
for (let i=0;i<arr.length;i++) {
if(!map.has(arr[i])){
map.set(arr[i],true)
res.push(arr[i]);
}
}
return res;
}
关注微信公众号前端凌影,一起学习吧!