2

私の目的は、配列に少なくとも 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

あなたのコードは、質問に記載されているように、一意の値のペアが少なくとも 1 つあることを確認するのではなく、重複をチェックすることを意味します。

回答のプールに別のメソッドを追加するだけです。配列を使用して重複をチェックします。一部() :

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]」の最初の値を、配列内の他のすべての値と照合するだけです。値の 1 つが配列の最初の値と一致する場合、値が繰り返されていることがわかります。そのロジックを実装する方法の例を次に示します。

    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 に答える