79 votes

Jquery each - Arrêter la boucle et retourner l'objet

Quelqu'un peut-il me dire pourquoi la boucle ne s'est pas arrêtée après la 5 entrée ?

http://jsbin.com/ucuqot/edit#preview


$(document).ready(function()
{
  someArray = new Array();
  someArray[0] = 't5';
  someArray[1] = 'z12';
  someArray[2] = 'b88';
  someArray[3] = 's55';
  someArray[4] = 'e51';
  someArray[5] = 'o322';
  someArray[6] = 'i22';
  someArray[7] = 'k954';  

  var test =  findXX('o322');   

});

function findXX(word)
{  
  $.each(someArray, function(i)
  {
    $('body').append('-> '+i+'<br />');
    if(someArray[i] == 'someArray')
    {
      return someArray[i]; //<--- did not stop the loop!
    }   
  });  
}

0 votes

Êtes-vous sûr que c'est vrai si(someArray[i] == 'someArray')

3 votes

Je pense que cette condition (someArray[i] == 'someArray') devrait être (someArray[i] == word)

1 votes

@user970727 regardez ma réponse. Elle utilise la fonction intégrée (i,n) dans la commande each.

0voto

CertainPerformance Points 110949

Plutôt que de définir un indicateur, il pourrait être plus élégant d'utiliser la fonction JavaScript Array.prototype.find pour trouver l'élément correspondant dans le tableau. La boucle se terminera dès qu'une valeur vraie sera renvoyée par le callback, et la valeur du tableau pendant cette itération sera la valeur .find la valeur de retour de l'appel :

function findXX(word) {
    return someArray.find((item, i) => {
        $('body').append('-> '+i+'<br />');
        return item === word;
    }); 
}

const someArray = new Array();
someArray[0] = 't5';
someArray[1] = 'z12';
someArray[2] = 'b88';
someArray[3] = 's55';
someArray[4] = 'e51';
someArray[5] = 'o322';
someArray[6] = 'i22';
someArray[7] = 'k954';

var test = findXX('o322');
console.log('found word:', test);

function findXX(word) {
  return someArray.find((item, i) => {
    $('body').append('-> ' + i + '<br />');
    return item === word;
  });
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X