[練習] 給數字數組去重——js

題目要求

完善函數 unique 的功能。javascript

  • 一、函數 unique 會對傳入的參數數組進行去重
  • 二、返回一個去重後的新的數組

以下所示:java

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;
}

官答如上spa

 

方法二 使用對象輔助記錄數字是否重複

思路:code

  • 建立一個新的數組存放結果
  • 建立一個空對象記錄數字是否出現過
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;
}
相關文章
相關標籤/搜索