• [练习] 给数字数组去重——js


    题目要求

    完善函数 unique 的功能。

    • 1、函数 unique 会对传入的参数数组进行去重
    • 2、返回一个去重后的新的数组

    如下所示:

    unique([10,2,3,4,2,10]); // 返回结果为 [10,2,3,4]

    function unique(str){
        var newArr = [];
        for (var i=0,len=str.length; i<len; i++){
            var isRepeat = false;
            for(var j=0; j<newArr.length;j++){
                if(str[i]==newArr[j]){
                    isRepeat = true;
                    break;
                }
            }
            if(!isRepeat){
                newArr.push(str[i]);
            }
            
        }
        return newArr;
    }

    方法一循环遍历判断

    思路:

    • 构建一个新的数组存放结果
    • 每次从原数组抽出一个数字,并且循环遍历结果数组,看是否已经存在相同的数组
    • 如果没有重复,则存进结果数组
    function unique(numbers) {
      // 创建一个结果数组
      var resultArr = [];
      // 循环遍历原数组,每次抽出一个数字进行判断
      for(var i = 0; i < numbers.length; i++){
        // 标识符:是否重复
        var isRepeat = false;
        // 循环遍历结果数组,进行对比
        for(var j = 0; j < resultArr.length; j++){
          if(numbers[i] == resultArr[j]){
            isRepeat = true;
            // 如果发现重复,则不需进行后面判断了
            break;
          }
        }
        // 如果没重复,则存进结果数组
        if(!isRepeat){
          resultArr.push(numbers[i]);
        }
      }
      return resultArr;
    }

    官答如上

    方法二 使用对象辅助记录数字是否重复

    思路:

    • 创建一个新的数组存放结果
    • 创建一个空对象记录数字是否出现过
    function unique(numbers) {
      // 创建一个新的数组
      var resultArr = [];
      var numbersObj = {};
      var i = 0;
      for(; i < numbers.length; i++){
        // 如果该数字还没见过,则放进新数组中
        if(!numbersObj[numbers[i]]){
          resultArr.push(numbers[i]);
          numbersObj[numbers[i]] = 1;
        }
      }
      return resultArr;
    }
     
  • 相关阅读:
    JNUOJ 1187
    JNUOJ 1184
    HDU 4848
    HDU 4849
    哈夫曼树和哈弗曼编码小记
    HDU 5726
    POJ 3368 & UVA 11235
    2016江苏省CPC省赛 I
    POJ 3928
    POJ 3067
  • 原文地址:https://www.cnblogs.com/chivasknight/p/8278673.html
Copyright © 2020-2023  润新知