JS:封装数组去重函数,随用随取,又方便又简单~

大家好,我是梅巴哥er。数组去重,是个经常提到的话题。那么,是否可以搞一个去重函数,随用随取呢?


封装之前,我们先来看下,普通的去重该怎么去做。

假如有这个一个数组,var arr1 = [1, 2, 3, 3, 2],想得到它的去重后的数组,要怎么做呢?

我的思路是:

  • 先声明一个空数组arr = [ ],
  • 再对数组arr1进行遍历
  • 取arr1中的元素1,和arr中的元素进行比较
  • 看下arr中是否有1了
  • 如果有了,就不操作。继续拿arr1中的元素2跟arr中的元素进行比较
  • 如果没有,就把1放进arr数组里。
  • 依次类推,然后输出。

按照这个思路,我们写一下代码:
var arr1 = [1, 2, 3, 3, 2]
var arr = [] // 声明空数组arr
// 用map对arr1遍历,v是arr1的元素,k是元素对应的索引号
arr1.map((v, k) => { 
	// ||或符号用于判断。前者为真,不操作。前者为假,执行后者。
    arr.includes(v) || arr.push(v)
})
console.log(arr)
// 输出 [ 1, 2, 3 ]

代码没问题。现在,我们对代码进行封装:
// 封装去重函数del
function del(arr1) {
    var arr = []
    arr1.map((v) => {
        arr.includes(v) || arr.push(v)
    })
    console.log(arr)
}

封装好啦,我们来测试一下叭。
var arr1 = [1, 2, 3, 3, 2, 'x', 'z', 'z', 'y', 'x', 1, 'z', 'x']
del(arr1)
// 输出 [ 1, 2, 3, 'x', 'z', 'y' ]

测试成功。没问题。


注:
如果自己不封装,可以用new Set()扩展运算符,来实现数组去重。

// 举个例子
var arr  = [1, 2, 3, 2, 3]
var arr1 = [...new Set(arr)]
console.log(arr1)
// 输出 [ 1, 2, 3 ]

学习更多set知识:JS内置标准对象Set


以上。

你可能感兴趣的:(js,数组去重)