数组中某个元素相同的去重_JS中合并多个数组,且去除数组重复元素

昨晚写的小demo,写一个方法合并传入的多个数组,并去除重复元素,具体实现如下:

function merge(bigArray) {

let array = [];

const middeleArray = bigArray.reduce((a,b) => {

return a.concat(b);

});

middeleArray.forEach((arrItem) => {

if(array.indexOf(arrItem) == -1){

array.push(arrItem);

}

});

return array;

}

console.log(merge([[4,5],[1,1],[2,3],[4,2,3]]));

因为要传入多个数组,所以可以传入二维数组的,这样一来可以使用数组的reduce方法将数组内嵌套的数组依次合并;

关于数组去重,我总结了以下四种:

要求必须返回原数组,可以对该数组进行循环,如果当前下标和当前元素在数组中的lastIndex不同,则删除这个元素,代码如下:

arr.forEach((item,index) => {

if(index != arr.lastIndexOf(item)){

arr.splice(index,1);

}

})

要求返回新数组,可以定义一个新数组,对原数组进行循环,判断如果当前元素在新数组中不存在(即index为-1),将其push进新数组,也就是demo中的写法。

要求返回新数组,最简单的应该是使用数组的filter方法,将当前下标和当前元素在数组中的lastIndex相同的元素筛选出来,具体实现如下:

function removeSame(arr) {

return arr.filter((item,index) =>

index ===arr.lastIndexOf(item));

}

注:使用ES6时当=>后面只有一条语句可以省略{ }和return

要求返回新数组,且要求在去重时将重复元素删掉,也就是说,输入[1,2,2,3],要返回[1,3],就可以利用数组的filter方法,将当前元素的index和lastIndex相同(注意比较与第3项的不同)的元素筛选出来,具体实现如下:

function removeSame(arr) {

return arr.filter((item) =>

arr.indexOf(item) === arr.lastIndexOf(item));

}

能想到的暂时就是这些,欢迎补充,我是Miss_cheng

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值