review javascript 14:数组去重

(1)题目:写一个数组去重的例子

(2)错误答案

init();
    function init(){
        arrH1();
    }
    /**
     * 问题:
     * (1)传入参数num会显示一个错误 Unused parameter num(未使用参数num)
     * (2)局部变量num 显示 Duplicate declaration(重复的声明)
     * (3)i 这个变量显示 variable i implicitly declared(i 隐式声明的变量)
     * (4)indexOf使用错误
     *
     * ----------indexOf begin----------
     * indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
     * stringObject.indexOf(searchvalue,fromindex)
     * ----------indexOf end----------
     * @param num
     * @returns {Array}
     */
    function arrH1(num){
        var num = [1,2,5,6,4,2,6,7];
        var newArr = [];
        for(i=0;i < num.length;i++){
            if(newArr.indexOf(num[i]) == -1){
                newArr.push(num[i]);
            }
        }
        return newArr;
    }

(3)正确答案

init();
    function init() {
        var arr1 = [1, 2, 3, 4, 1, 2, 3];
        //var arr2 = [a, 2, 3];//Uncaught ReferenceError: a is not defined
        var arr2 = ['a', 2, 3, 'a', '3'];//['a',2,3]

        filterRepeat(arr1);
        filterRepeat(arr2);
    }
    /**
     * 需求:我想实现一个功能,传入一个数组,然后去重
     * 分析:
     * (1)定义一个函数
     * (2)入参:数组
     * (3)返回值:数组
     *
     * 难点:
     * (1)如何去重
     */

    /**
     * 去重数组中的重复对象
     *
     * @param arr 传入的参数,必须是个数组
     * @returns {Array} 去重之后的数组
     */
    function filterRepeat(arr) {
        var rtn = new Array();

        for (var i = 0; i < arr.length; i++) {
            if (!isExist(arr[i], rtn)) {
                rtn.push(arr[i]);
            }
        }
        console.log(rtn);
        return rtn;
    }

    /**
     * 判断一个值在数组中是否存在
     *
     * @param val 值
     * @param arr 数组
     * @returns {boolean} 是否存在,存在则返回true,不存在则返回false
     */
    function isExist(val, arr) {
        var rtn = false;

        for (var i = 0; i < arr.length; i++) {
            //一旦判断数据存在,则结束循环
//            if (val == arr[i]) {
//                rtn = true;
//                break;
//            }
            //对类型进行判断
            if (val === arr[i]) {
                rtn = true;
                break;
            }
        }

        return rtn;

    }


    function isExist2(val, arr) {
        for (var i = 0; i < arr.length; i++) {
            //一旦判断数据存在,则结束循环
            if (val === arr[i]) {
                return true;
            }
        }
        return false;

    }

(4)分析

数组去重.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,322评论 25 709
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • 炎炎夏日里 有这样一群老头 他们聚集在阴凉处 翘着有点别扭的二郎腿 坐在天然的石凳上 老头们兴高采烈的讨论着 东家...
    纯瑟阅读 1,475评论 0 4
  • 那天凌晨三点早早醒来,前天晚上看到第三次教育行走的通知,头脑发热就写了行走申请,怕夜长梦随即发了出去,然后是忐忑不...
    自强不息678阅读 1,547评论 0 2
  • 陶皮阅读 1,904评论 0 2