JavaScript 数组去重

一、结合 includes() 输出的还是数组
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组去重</title>
</head>

<body>
    <script>
        let arr = [1, 1, 2, 3]
        function unique(arr) {
            // 1.判断传进来的是不是数组
            if (!Array.isArray(arr)) {
                console.log('传进来的不是数组');
            }
            //2.定义一个新的空数组,方便提取出去重后的数组
            let newArr = [6, 8]
            // 3.定义循环下标
            for (let i = 0; i < arr.length; i++) {
                //4. 判断 新的空数组 是否包含了 旧数组的某一项,不包含就把这一项添加到新数组
                if (!newArr.includes(arr[i])) {
                    newArr.push(arr[i])
                }
            }
            // 5.同层 把定义的变量 return 出去
            return newArr
        }
        console.log(unique(arr)); //(5) [3, 2, 1, 6, 8]    输出的还是数组

        document.writeln(unique(arr)) //1,2,3

    </script>
</body>

</html>
二、结合 find(), 输出的还是数组
<script>
        let arr = [1, 2, 3, 1, 2]
        function unique(arr) {
            if (!Array.isArray(arr)) {
                console.log('传进来的不是数组');
                return
            }
            var arr2 = []
            for (let i = 0; i < arr.length; i++) {
            //find()传入一个回调函数,在回调函数里面把传入的每一项拿到, 找符合条件的第一项,如果符合就返回
                if (!arr2.find(function (v) {
                    // console.log(v);
                    return v == arr[i]    //v  传过来的
                })) {
                    arr2.push(arr[i])
                }
            }
            return arr2
        }
        console.log(unique(arr));//(3) [1, 2, 3]
    </script>

箭头函数写

 let arr = [1, 2, 3, 1, 2]
        function unique(arr) {
            if (!Array.isArray(arr)) {
                console.log('传进来的不是数组');
            }
            let newArr = []
            for (let i = 0; i < arr.length; i++) {
                if (!newArr.find((v) => {
                    return v == arr[i]
                })) {
                    newArr.push(arr[i])
                }
            }
            return newArr
        }
        console.log(unique(arr)); //(3) [1, 2, 3]
三、结合 findIndex(), 输出的还是数组
 <script>
        let arr = [1, 1, 2, 3]
        function unique(arr) {
            var arr3 = []
            if (!Array.isArray(arr)) {
                console.log('抱歉,传入的不是数组');
            }
            for (let i = 0; i < arr.length; i++) {
                if (arr3.findIndex(function (v) {
                    return v == arr[i]
                }) == -1) {
                    arr3.push(arr[i])
                }
            }
            return arr3
        }
        console.log(unique(arr));//(3) [1, 2, 3]
    </script>
四、es6 Set() 去重后,不是数组类型
<script>
        let arr = [1, 2, 3, 1, 2]
        const newArr = new Set(arr)
        console.log(newArr);  //Set(3) {1, 2, 3}  去重后,不是数组类型
        document.writeln(newArr)  //[object Set]
    </script>

找到 方法了:
获取唯一值数组可能比想象的要容易:

var j = [...new Set([1, 2, 3, 3])]
>> [1, 2, 3]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 数组去重是一个老生常谈的话题,也是前端童鞋在面试时的一道高频题。本文将深入的探索数组去重的原理及实现,为各位...
    盼少阅读 2,615评论 0 0
  • 前言 数组去重是一个老生常谈的话题,也是前端童鞋在面试时的一道高频题。本文将深入的探索数组去重的原理及实现,为各位...
    胡哥有话说阅读 2,286评论 0 0
  • 世界上很多的困难,只是思维上设限。 数组翻转 数组翻转有很多方法,这里总结俩种: 原生方法 reverse 使用循...
    宁不空阅读 1,369评论 0 0
  • 一、测试模版 数组去重是一个老生常谈的问题,网上流传着有各种各样的解法 为了测试这些解法的性能,我写了一个测试模版...
    过期猫粮_45f1阅读 4,590评论 0 0
  • 数组去重是一个经常会用到的方法,我写了一个测试模板,测试一下常见的数据去重的方法的性能 测试模板 1、Array....
    路尔轩阅读 16,343评论 1 5

友情链接更多精彩内容