js中数组里包含数组进行去重。。

本文介绍了一种在JavaScript中对包含多个子数组的数组进行去重的方法,通过将子数组转换为字符串,利用Set实现去重,再还原为子数组形式。

js中一个数组里包含了多个数组,如何对该数组去重里面的小数组。

话不多说,直接开始,我这是一个笨方法,如果小伙伴有更好的方法,欢迎告知。
 var arr = [[1, 2, 3], [2, 3], [4, 5], [1, 3], [1, 2, 3], [2, 3]];//好比有这么一个数组,里面是一个个小数组,很明显前两个小数组和最后面两个数组是一样的,需要对其去重。
     var newarr = [];//先建一个空数组
    arr.forEach(item => {
      newarr.push(item.toString())//然后用空数组将每一个小数组转为字符串push进去,
    })
    (6) ["1,2,3", "2,3", "4,5", "1,3", "1,2,3", "2,3"]//push完后就成了一个数组,里面是一个个字符串了。
		0: "1,2,3"
		1: "2,3"
		2: "4,5"
		3: "1,3"
		4: "1,2,3"
		5: "2,3"
    var arr2 = [...new Set(newarr)]//然后对现在这个数组进行去重,这个方法就很多了,这里比较懒用了es6的最简单的方法,可以百度一下,不兼容ie6的话可以用其他方法。
    var arr3 = []
    arr2.forEach(item => {
      arr3.push(item.split(','))//再用一个空数组,将刚才那个数组里的字符串再次转为一个个小数组,push进去。
    })
     console.log(arr3);//完成,就达到了想要的结果。
     (4) [Array(3), Array(2), Array(2), Array(2)]
		0: (3) ["1", "2", "3"]
		1: (2) ["2", "3"]
		2: (2) ["4", "5"]
		3: (2) ["1", "3"]

这个方法我都感觉有点笨,菜鸟一枚,有大佬有更好的方法,一定要告知,拜托。。。

在 JavaScript 中,使用 `reduce` 方法进行数组有以下几种常见方式: ### 基本数组 对于基本类型元素的数组,可以使用 `includes` 方法结合 `reduce` 来实现。示例代码如下: ```javascript let arr = [1, 2, 2, 4, null, null]; let uniqueArr = arr.reduce((accumulator, current) => { return accumulator.includes(current) ? accumulator : accumulator.concat(current); }, []); console.log(uniqueArr); ``` 上述代码中,`reduce` 方法会遍历数组的每个元素。对于每个元素,检查它是否已经存在于 `accumulator` 中,如果存在则跳过,如果不存在则添加到 `accumulator` 中。最终 `accumulator` 即为后的数组 [^3]。 ### 另一种基本数组写法 ```javascript const uniqueArr3 = function(arr) { return arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []); }; let testArr = [5, 6, 6, 7]; console.log(uniqueArr3(testArr)); ``` 这种写法与上面的原理相同,只是使用了扩展运算符 `...` 来添加新元素 [^4]。 ### 对象数组 对于对象数组,需要根据对象的某个属性来判断是否复。可以使用 `some` 方法结合 `reduce` 实现。示例代码如下: ```javascript let array = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 1, name: 'Alice' } ]; array = array.reduce((acc, curr) => { const isDuplicate = acc.some(item => item.id === curr.id); if (!isDuplicate) { acc.push(curr); } return acc; }, []); console.log(array); ``` 在这个例子中,根据对象的 `id` 属性来判断是否复。如果 `acc` 中已经存在具有相同 `id` 的对象,则跳过当前对象,否则将其添加到 `acc` 中 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值