用戶將在textarea
中輸入各種連續字符。每個換行符都會顯示一個新的序列號。一些要求/限制:textarea重複字符串檢查忽略前導和尾隨空格
- 不允許使用前導和尾隨空格。
- 串行內的空白是可以的。
- 空白連續字符不允許
- 我寧願不使用JQuery。
- 存儲重複項,以便它們可以顯示給用戶。
基於我的測試,我有一個工作解決方案。我想確保我不會錯過或忽略任何東西。我的問題是:
- 有沒有更有效的方法來檢查重複?
- 是否有任何明顯的測試案例,我的解決方案無法抓住?
工作實施例:http://jsbin.com/ivusuj/1/
function duplicateCheck() {
var output = document.getElementById('Output');
output.innerHTML = '';
var duplicateSerials = [];
var count = 0;
var textArea = document.getElementById('Serials');
var serials = textArea.value.trim().split(/ *\n */);
for(var i = 0;i < serials.length;i++){
var serial = serials[i];
if(serials.indexOf(serial) != serials.lastIndexOf(serial) &&
duplicateSerials.indexOf(serial) == -1 && serial !== '') {
duplicateSerials.push(serial);
}
}
// For testing
output.innerHTML = '<pre>Serials:\t' + serials.toString() + "<br />" +
'Duplicates:\t' + duplicateSerials.toString() + "<br>" +
'</pre>';
}
注:以上爲客戶端檢查。服務器端也會執行相同的檢查,以確保數據有效。
更新
解決方案比較:http://jsbin.com/ivusuj/4/edit
我知道這是挑剔的,但只是你可能想要考慮的事情,如果你要分享代碼。通常對於像這樣的函數,您希望以小寫字母開頭。這似乎是慣例,即用大寫字母開頭的名字是爲了要實例化的函數而保留的(即用作「類」的函數)。 –
不用擔心;我很欣賞這個建議。我實際上已經這樣做了,然後改變了它。 – JSuar