review javascript 14:数组去重

2017-04-24  本文已影响16人  蝴蝶结199007

(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
上一篇下一篇

猜你喜欢

热点阅读