Pesquisa de site

Instrução break no método map de array do JavaScript


Possível Duplicata:
Como interromper o Array.forEach como se estivesse chamando break?

Existe uma maneira de eu sair do método map de um array depois que minha condição for atendida? Eu tentei o seguinte, o que lança o erro "Declaração break ilegal". Este é um exemplo aleatório que eu criei.

var myArray = [22,34,5,67,99,0];

var hasValueLessThanTen = false;

myArray.map(function (value){
    if(value<10){
      hasValueLessThanTen = true;
      break;
    }
  }
);

Podemos fazer usando loops for, mas eu queria saber se podemos conseguir o mesmo usando o método map ?

Resposta #1

Isso não é possível usando o Array.prototype.map embutido. No entanto, você poderia usar um simples for-loop em vez disso, se você não pretende map nenhum valor:

var hasValueLessThanTen = false;
for (var i = 0; i < myArray.length; i++) {
  if (myArray[i] < 10) {
    hasValueLessThanTen = true;
    break;
  }
}

Ou, conforme sugerido por @RobW, use Array.prototype.some para testar se existe pelo menos um elemento que seja menor que 10. Ele vai parar de percorrer quando algum elemento que corresponda à sua função for encontrado:

var hasValueLessThanTen = myArray.some(function (val) { 
  return val < 10;
});

Artigos relacionados