2021-08-25前端的数组去重

数组去重的四种方法

方法一:双重for循坏

核心:外循环遍历array数组,内循环遍历新生成的数组,当新数组的元素与外循环的元素不一致时就push到新数组中。
代码实现如下

<script>
let array = [12, 14, 12, 13, 13, 14]
        function removesame(arr) {
            let b = []
            let flag = true
            for (let i = 0; i < arr.length; i++) {
                for (let j = 0; j < b.length; j++) {
                    if (arr[i] == b[j]) {
                        flag = false
                        break
                    } else {
                        flag = true
                    }
                }
                if (flag) {
                    b.push(arr[i])
                }
            }
            return b
        }
        console.log(removesame(array))
</script>

方法二:set()方法

核心:Set对象是一组不重复的值,重复的值会被忽略,new出来的是一个对象要用展开运算符放到一个数组里面
代码实现如下:

<script>
   var arr = [12, 14, 12, 13, 13, 14]
        var nv = [...new Set(arr)]
        console.log(nv);

        // 两个数组合并之后去重
        let a = [1, 2, 4, 2, 3, 1, 2, 2]
        let b = [2, 5, 2, 3, 1, 5, 3, 3]
        let c = [...new Set([...a, ...b])]
        console.log(c);
</script>

方法二补充:将对象转换为数组的两种方法 , for of 或者array.from
代码如下:

<script>
        // 补充:变量c是一个对象,转换为数组可以
        // 用for of(Set对象自带Iterator接口,如果没有用for of就会报错。)遍历
        let a = [1, 2, 4, 2, 3, 1, 2, 2]
        let c = new Set(a);
        for (let val of c) {
            console.log(val);
        }
        console.log(c);
        // 或者用array.from 方法
        let a = [1, 2, 4, 2, 3, 1, 2, 2]
        let c = new Set(a);
        let d = Array.from(c);
        console.log(d);
</script>

方法三:indexof

核心:当indexof没有匹配到相同的元素就会返回-1
代码实现如下:

<script>
 let arr = [1, 3, 4, 6, 8, 3, 5, 7, 5, 3, 4, 6]
        let ar = []
        for (let i = 0; i < arr.length; i++) {
        // 当indexof没有匹配到与ar相同的元素就会返回-1,为-1时就是我们要找的元素
            if (ar.indexOf(arr[i]) === -1) {
                ar.push(arr[i])
            }
        }
        console.log(ar);
</script>

方法四: includes方法

核心:检测数组是否有某个值,没有某个值就返回false
代码实现如下:

<script>
 let arr = [1, 3, 4, 6, 8, 3, 5, 7, 5, 3, 4, 6]
        let ar = []
        for (var i = 0; i < arr.length; i++) {
            if (!ar.includes(arr[i])) {
                //includes 检测数组是否有某个值,没有某个值就返回false,
                //那么当前元素也就是我们要的
                ar.push(arr[i]);
            }
        }
        console.log(ar);
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容