Recorrer array de objetos hasta llegar a sus propiedades en js

publicado por: Anonymous

Tengo una función en la cual le paso un elemento de tipo string y quiero compararlo con con una propiedad que cada objeto que compone el Array tienen. Si coincide me devuelve true y sino false.

_x000D_

_x000D_

function Carta(id, marca, puntos) {_x000D_
    this.id = id;_x000D_
    this.marca = marca;_x000D_
    this.puntos = puntos;_x000D_
_x000D_
    //GETTER_x000D_
    this.getId = function () {_x000D_
        return this.id;_x000D_
    }_x000D_
_x000D_
    this.getMarca = function () {_x000D_
        return this.marca;_x000D_
    }_x000D_
_x000D_
    this.getPuntos = function () {_x000D_
        return this.puntos;_x000D_
    }_x000D_
}_x000D_
_x000D_
lambo1 = new Carta("lambo1", "lamborghini", 25);_x000D_
lambo2 = new Carta("lambo2", "lamborghini", 25);_x000D_
bmw1 = new Carta("bmw1", "bmw", 25);_x000D_
bmw2 = new Carta("bmw2", "bmw", 25);_x000D_
volks1 = new Carta("volks1", "volkswagen", 25);_x000D_
volks2 = new Carta("volks2", "volkswagen", 25);_x000D_
nissan1 = new Carta("nissan1", "nissan", 25);_x000D_
nissan2 = new Carta("nissan2", "nissan", 25);_x000D_
_x000D_
function verificarCampo(elemento){_x000D_
    for (i=0; i<=baraja.length; i++) {_x000D_
        if(baraja[i]."objeto"."elementoObjeto"==elemento){_x000D_
            return true;_x000D_
        }_x000D_
        else{_x000D_
            return false;_x000D_
        }_x000D_
    }_x000D_
}

_x000D_

_x000D_

_x000D_

Pero en la comprobacion “if(baraja[i].”objeto”.”elementoObjeto”==elemento)” no se como escribirla correctamente ya que cada objeto tiene un nombre distinto…

Dentro de cada objeto sus propiedades tienen mismos nombres. Alguien sabe como podria hacerlo?

solución

Suponiendo que la baraja es un array que agrupa las cartas:

var baraja=[];
baraja.push( new Carta("lambo1", "lamborghini", 25));
baraja.push( new Carta("lambo2", "lamborghini", 25));
baraja.push( new Carta("bmw1", "bmw", 25));
baraja.push( new Carta("bmw2", "bmw", 25));
baraja.push( new Carta("volks1", "volkswagen", 25));
baraja.push( new Carta("volks2", "volkswagen", 25));
baraja.push( new Carta("nissan1", "nissan", 25));
baraja.push( new Carta("nissan2", "nissan", 25));

Y quieres una función que verifique que si la carta “nissan2” está en la baraja, harías

function cartaExiste(id_carta){
    var existe=false;
    for (i=0; i < baraja.length; i++) {
        if(baraja[i].getId() == id_carta ){
            existe = true;
        }
    }
    return existe;
}

Ojo que el bucle termina en i < baraja.length y no en i <= baraja.length. Los arrays comenzan en cero.

Hay una manera más elegante de hacerlo que es usando array.filter

function cartaExiste(id_carta){
    var matching = baraja.filter(function(carta) {
      return carta.getId() == id_carta;
    });
    return matching.length>0;
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *