2

我的目标是找出我们是否在一个数组中至少有两个不同的值。如何使用纯 javascript 找出这一点。到目前为止,我使用这个函数,它告诉我数组中是否有重复的值......

function verificar(array)
{

var filtrado_arr = array.sort(); 
var resultados = [];
for (var i = 0; i < array.length - 1; i++) {
     if (filtrado_arr[i + 1] == filtrado_arr[i]) {
         resultados.push(filtrado_arr[i]);
 }
 }
  if (resultados.length > 0)
 {
  alert("Repeated results"+resultados+".Unable to send to graph.");
  return false;
  }
  else
  {
  alert("No repeated measures, we can set graph");
  return true;
  }
 }

但这当然还不够。

4

4 回答 4

4

使用排序和额外的数组似乎是执行这个简单任务的一种过于昂贵的方法。以下有什么问题?

function verificar(arr)
{
   for (var i=1; i<arr.length; i++) {
      if (arr[i-1] != arr[i])
         return true;
   }
   return false;
}
于 2013-08-12T05:42:59.583 回答
2
function verificar(array) {

   for(i=1; i<array.length; i++){
      if(array[0] !== array[i])
         return true;
   }

   return false;
}
于 2013-08-12T05:53:39.703 回答
2

您的代码暗示您要检查重复项,而不是验证您是否至少有一对唯一的值,如您的问题中所述。

我只想在答案池中添加另一种方法:使用 Array.checking for duplicates。一些()

function hasDuplicates(array){
    return array.some( function( elm, idx ){
        return array.lastIndexOf( elm ) > idx;
    });
}
console.log( hasDuplicates([3,4,1,2]) ); // false
console.log( hasDuplicates([3,4,1,3,2]) ); // true
于 2013-08-12T06:48:57.097 回答
1

只需对照数组中的所有其他值检查数组“filitrado_arr[0]”的第一个值。如果其中一个值与数组的第一个值匹配,则您知道存在重复值。这是一个如何实现该逻辑的示例:

    function verificar(array){ 
    var repeats = false
    for (var i = 1; i < array.length; i++) {
         if (array[0] == array[i]) {
             repeats = true;
             return repeats
     }
     }
}

但是,此答案与原始函数中的警报所暗示的目标相匹配,而不是问题本身的目标。

于 2013-08-12T05:49:22.543 回答