JavaScript:检测数组中的重复元素
我有一个小脚本,可以检测表单上字段数组中的重复元素JavaScript:检测数组中的重复元素,javascript,arrays,Javascript,Arrays,我有一个小脚本,可以检测表单上字段数组中的重复元素 function dupes() { var unique = []; //Loop through array of fields to get entered values for (i = 0; i <= 9; i++) { unique[i] = Number(document.getElementById('proj' + i).value); } unique.sort(
function dupes() {
var unique = [];
//Loop through array of fields to get entered values
for (i = 0; i <= 9; i++) {
unique[i] = Number(document.getElementById('proj' + i).value);
}
unique.sort();
//Now compare the array values. If there are any duplicates, throw an error
for (i = 1; i <= 9; i++) {
if (unique[i] == unique[i - 1]) {
document.getElementById('errormsg').innerHTML = 'duplicated values!';
return false;
}
}
}
函数复制(){
var-unique=[];
//循环遍历字段数组以获取输入的值
对于(i=0;i这将检测重复值:
var arr= [];
//Loop through array of fields to get entered values
for (i = 0; i <= 9; i++) {
arr.push(Number(document.getElementById('proj' + i).value));
}
function dupes(arr) { // pass the array to find dupes
var i, len=arr.length, unique= [], obj={};
for (i=0;i<len;i++) {
obj[arr[i]]=0;
}
for (i in obj) {
unique.push(i);
}
if(unique.length != arr.length) {
document.getElementById('errormsg').innerHTML = 'duplicated values!';
}
}
dupes(arr);
var arr=[];
//循环遍历字段数组以获取输入的值
对于(i=0;i控制台上有任何错误吗?你能提供一个简单的提琴吗?@epascarello:你注意到数组被排序了吗?提琴如下:看我的答案,使用工作的提琴演示你能解释为什么原始的(更有效)脚本不起作用?@Bergi在实际查看了OP的JS提琴后,它似乎确实起作用了,他只是忘了在JSFIDLE中设置No wrap-in
选项。他没有看到这一点。就效率而言,你可能是对的,我只是认为将其应用于10个值时差异很小。
document.getElementById('projError').innerHTML = 'no duplicates ;)';
var arr= [];
//Loop through array of fields to get entered values
for (i = 0; i <= 9; i++) {
arr.push(Number(document.getElementById('proj' + i).value));
}
function dupes(arr) { // pass the array to find dupes
var i, len=arr.length, unique= [], obj={};
for (i=0;i<len;i++) {
obj[arr[i]]=0;
}
for (i in obj) {
unique.push(i);
}
if(unique.length != arr.length) {
document.getElementById('errormsg').innerHTML = 'duplicated values!';
}
}
dupes(arr);