así que aquí hay un problema con el que he estado luchando por un tiempo ahora. Quiero filtrar una lista de objetos, pero el código parece funcionar solo para matrices. ¿Puedo llegar al mismo resultado con los objetos? Básicamente lo que quiero es algo como: if card.name = jose. luego elimine jose._R if card.name = jose._R luego elimine jose.
Código:
var data = {'cards' : [ {'name': "jose."}, {'name': "jose._R"}, {'name': "rodrigo."}, {'name': "rodrigo._R"}, {'name': "jojo."}, {'name': "jojo._R"}, ] }; let dataName = data.cards[0].name; let rev = data.cards[0].name + "_R"; var data2 = ["jose.", "jose._R", "rodrigo.", "rodrigo._R", "jojo.", "jojo._R",]; let dataName2 = data2[0]; let rev2 = data2[0] + "_R"; if(dataName2.endsWith('.')){ data2 = data2.filter(function(f) {return f !== rev2}); }; if(dataName.endsWith('.')){ data = data.cards.filter(function(f) {return f !== rev}); // NOT WORKING! It doesn't remove the object array... :-( }; console.log(data); console.log(data2);
En su función de filtro
function(f) { return f !== rev; }
Estás comparando el objeto completo { 'name': 'rodrigo.' }
a la cadena para que nunca sean iguales. En su lugar, debe comparar la propiedad del nombre con la cadena dada:
function(f) { return f.name !== rev; }