搜索
您的当前位置:首页正文

数组(字符)去重的常见的三种方法

来源:二三娱乐

假设我们有一个多行文本输入框,允许用户在输入框中输入自己的兴趣爱好。
在body中:

<body>
   <textarea id="hobbiesInput"> 篮球 羽毛球 皮球 篮球 1 3 4 3 2 篮球</textarea>
 </body>

考察数组去重,标准答案是利用JavaScript对象来做,用两个for循环也可以,但是要考虑到如何降低时间复杂度

第一种对象方法:用while

 function getUserHobbies(){
   //获取输入框里内容
   var userInput = document.getElementById('hobbiesInput').value;
  //把用户输入变成数组,去除空格
    userInput = userInput.replace(userInput = userInput.replace(/[,,、\s]+/g, ',');)
  userInput = userInput.split(',');
  //新建个对象
  var tmpHash = {};
  var len = userInput.length;
  while(len--){
        if(userInput[len]!=""){
            tmpHash[userInput[len]]=true;
          }
    }
    //新建一个数组,用来存放去重之后的数组
    var hobbiesArray = [];
    for(var key in tmpHash){
      hobbiesArray.push(key);
  }
      return hobbiesArray
}
var newHobbiesArray = getUserHobbies();
console.log(newHobbiesArray);

第二种方法:用for

function getUserHobbies(){
  var userInput = document.getElementById('hobbiesInput').value;
  userInput = userInput.replace(/[,,、 \s]+/g,',')
  userInput = userInput.split(',');
  var tmpHash = {};
  var hobbiesArray = [];
  for(var i = 0;i<userInput.length;i++){
        var len = userInput.length;
        if(tmpHash[len]!=userInput[i]){
            tmpHash[len] = len;
            hobbiesArray.push(len);
    }
  }
  alert(hobbiesArray);
}
getUserHobbies();

第三种方法:用双层for循环

function getUserHobbies(){
    var userInput = document.getElementById("hobbiesInput").value;
    userInput = userInput.replace(/[,,、 \s]+/g,',')
    userInput = userInput.split(',');
     for(var i = 0;i<userInput.length;i++){
        for(var j = i+1;j<userInput.length;j++){
            if(hobbiesArray[i]==hobbiesArray[j]){
                hobbiesArray.splice(i,1);
                i = i -1;
                break;
  }
  }
}
  alert(hobbiesArray);
}
  getUserHobbies();

很久没有更新简书了,(__) 嘻嘻……,愿看到这篇简书的每一位小伙伴都升职加薪,工作顺利,越来越好呀!加油(@ο@) 哇~ 前端之路。

Top