ユーザーは、さまざまなシリアル番号を に入力し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