1. 数组扁平化
1.使用栈的思路进行数组扁平化
const arr =[1,[2,2], ,[4,[1,2],5], , ,7,2];
const flatten = (arr)=>{
const stack=[];
const res=[];
stack.push(arr);
while(stack.length){
const item = stack.pop();
if(Array.isArray(item)){
stack.push(...item);
}else{
res.push(item);
}
}
return res.reverse();
}
flatten(arr);
2.flat
const res = arr.flat(Infinity);
3.正则 将结果值都转换为字符串类型
const res = JSON.stringify(arr).replace(/\[|\]/g,'').split(',');
4.优化正则
JSON.parse('['+JSON.stringify(arr).replace(/\[|\]/g,'')+']');
5.使用reduce
const flatten = arr => {
return arr.reduce((pre,cur)=>{
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
},[])
}
const res = flatten(arr);
6. 递归
var arr=[1,2,[3,4,[5,6]],7,8];
function flatArr (arr){
const res =[];
for(let i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
//res.push(...flatArr(arr[i]));
flatArr(arr[i]);
}else{
res.push(arr[i]);
}
}
return res;
}
flatArr(arr);
2.数组去重
1.使用map对象的思路进行数组去重
var arr =[1,2,2, ,4,5, , ,7,2];
const unRepeat= arr => {
var obj = {};
var res=[];
for(let j=0;j<arr.length;j++){
const item = arr[j];
if(!obj[item]){
obj[item] = 1; // 此处,如果obj[item]为undefined,会去重失败
res.push(item);
}
}
return res;
}
unRepeat(arr);
2.利用indexOf
var arr =[1,2,2, ,4,5, , ,7,2];
const unique = arr => {
const res=[];
for(let i=0;i<arr.length;i++){
if(res.indexOf(arr[i]) === -1){
res.push(arr[i]);
}
}
return res;
}
unique(arr);
3.利用filter
var arr =[1,2,2, ,4,5, , ,7,2];
const unique4 = arr => {
return arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
}
unique4(arr);
4.利用include
const unique3 = arr => {
const res = [];
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) res.push(arr[i]);
}
return res;
}
5.利用map
const unique = 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;
}
参考文章:
发表评论
还没有评论,快来抢沙发吧!