<p id="demo"></p>
<script>
//This is the email list
var emailList =["[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", ];
//I am removing @yahoo.edu
function removeAddress(list){
for (var i = 0; i < list.length; i++) {
list[i] = list[i].replace("@yahoo.edu", " ");
}
}
//Function to remove the duplicates in the list
function removeDuplicates(list)
{
var hash = {};
for (var i = 0; i < list.length; i++)
{
var array = list[i];
for (var j = 0; j < array.length; j++)
{
var val = array[j];
var hashedVal = hash[val];
if (hashedVal === undefined)
{
hash[val] = true;
}
else
{
array.splice(j, 1);
if (array.length == 0)
{
list.splice(i, 1);
}
}
}
}
}
document.getElementById("demo").innerHTML = emailList;
//Remove @yahoo.edu from the list
removeAddress(emailList);
//Sort the list
emailList.sort();
//Remove the duplicates
removeDuplicates(emailList);
//Print the list
document.getElementById("demo").innerHTML = emailList;
</script>
</body>
</html>
0
A
回答
5
首先,我不知道爲什麼你要遍歷一個2維的數組。這沒有必要。其次,你正在迭代數組,同時刪除元素。當元素被移除時,它後面的所有元素都被推送1個索引。然後i
增加,導致您錯過一個項目。如果您要繼續使用for
循環並使用.splice()
,則需要在刪除項目時手動減量i
。另外,由於emailList
是一個字符串數組,因此您只需要一個循環。
function removeDuplicates(list)
{
var hash = {};
var newList = [];
for (var i = 0; i < list.length; i++)
{
var email = list[i];
if (hash[email] === undefined) {
hash[email] = true;
} else {
list.splice(i, 1);
i --;
}
}
}
0
所以基本上,你只是獲取用戶名列表。它可能已被簡化爲以下幾點:
var emailList = ["[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n", "[email protected]\n"];
var usernameHash = emailList.reduce(function(usernames, email, i) {
var username = email.slice(0, email.indexOf('@'));
if(!usernames[username]) usernames[username] = true;
return usernames;
}, {});
var usernames = Object.keys(usernameHash)
document.write(usernames.join(', '));
+1
在篩選器中搜索列表使得此O(n^2)。哈希方法是O(n)。雖然如果名單很小,這可能不是什麼大不了的事。 – Barmar
1
在內部for
,你是循環字符串,而不是另一個數組。 其次,你可能想要.join()
這個數組在最後獲得一個可打印的字符串。
相關問題
- 1. 爲什麼重複功能不起作用?
- 2. 爲什麼我的鏈接列表刪除功能不起作用?
- 3. 刪除功能不起作用
- 4. 刪除功能不起作用
- 5. Ajax刪除功能不起作用
- 6. 刪除功能不起作用 - Yii
- 7. SQLAlchemy中刪除()功能不起作用
- 8. 刪除功能不起作用?
- 9. 爲什麼我的創建功能不起作用?
- 10. Rails 3.1刪除重定向,建議不起作用
- 11. 重複功能不起作用
- 12. 爲什麼有時我的加載功能不起作用
- 13. 刪除功能重複
- 14. 我的jplayerplaylist刪除功能不起作用
- 15. Tomcat 7 Websockects通過AJP不起作用。有什麼建議麼?
- 16. 爲什麼刪除()不起作用
- 17. 爲什麼paleoTS功能不起作用?
- 18. 爲什麼sendEmail功能不起作用?
- 19. 爲什麼phpmailer功能不起作用
- 20. 爲什麼onPress功能不起作用?
- 21. 刪除magentos搜索建議功能?
- 22. 爲什麼Ant的默認排除功能不起作用?
- 23. 不明白爲什麼我的JavaScript功能不起作用?
- 24. ,有什麼建議嗎?
- 25. 誰能告訴我爲什麼這個功能不起作用
- 26. 爲什麼我的按鈕上的功能不起作用?
- 27. 爲什麼我的datatables.js上的搜索功能不起作用?
- 28. 爲什麼我的動態刪除不起作用?
- 29. 爲什麼我的PHP刪除腳本不起作用?
- 30. 爲什麼我的Ant刪除不起作用?
「不工作」不是問題描述。你的功能代之以什麼?它什麼都沒做?它創造更多重複?它向鄰居的窗戶扔石頭?控制檯中有任何錯誤? – Teemu
@Teemu我剛接觸Javascript。我的函數removeDuplicates在調用時不會從我的列表中刪除重複項。我正在使用Tryit Editor v2.5。我沒有收到錯誤,persae,我的程序沒有運行。 – MJB
有許多第三方庫具有執行此操作的功能。例如,jQuery有'$ .unique',Underscore有'_.uniq'。 – Barmar