[练习] 给数字数组去重——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;
}

优质内容筛选与推荐>>
1、微服务-网关zuul演变
2、P3629 【[APIO2010]巡逻】
3、22条处世箴言不可不读
4、C#自定义控件在添加引用后不显示在工具箱的解决方法(转)
5、Spring AnnotationConfigApplicationContext


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn