用户将在一个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