Javascript:找出数组中是否至少有两个不同的值

时间:2013-08-12 05:30:00

标签: javascript arrays function sorting

我的目标是找出数组中是否至少有两个不同的值。如何使用纯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 个答案:

答案 0 :(得分:4)

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

function verificar(arr)
{
   for (var i=1; i<arr.length; i++) {
      if (arr[i-1] != arr[i])
         return true;
   }
   return false;
}

答案 1 :(得分:2)

function verificar(array) {

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

   return false;
}

答案 2 :(得分:2)

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

我只是在答案池中添加另一种方法:使用Array检查重复项。some()

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

答案 3 :(得分: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
     }
     }
}

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