美文网首页
review javascript 14:数组去重

review javascript 14:数组去重

作者: 蝴蝶结199007 | 来源:发表于2017-04-24 00:20 被阅读16次

    (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

    相关文章

      网友评论

          本文标题:review javascript 14:数组去重

          本文链接:https://www.haomeiwen.com/subject/daruzttx.html