假设我们有一个多行文本输入框,允许用户在输入框中输入自己的兴趣爱好。
在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();
很久没有更新简书了,(__) 嘻嘻……,愿看到这篇简书的每一位小伙伴都升职加薪,工作顺利,越来越好呀!加油(@ο@) 哇~ 前端之路。