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);