Tratando de obtener un objeto cuyo valor de origen sea Cocina y cuya longitud de archivos de factura sea igual a cero.
Estoy usando el método de filtro pero no devuelve ningún valor. No estoy seguro de por qué el método de filtro no devuelve ningún valor.
alguien podría ayudar aquí para seguir adelante
Gracias por adelantado
var data = [{ "data_id": "1", "name": "abc", "source":"Hall", "sqft": "1100", "invoiceItems":[ { "inv_id": "1", "price": "925", "Files":[ { "filename": "a", "filepath":"zxc" }] }, { "inv_id": "2", "price": "925", "source":"tymetrix", "Files":[] } ] }, { "data_id": "2", "name": "def", "source":"Kitchen", "sqft": "1200", "invoiceItems":[{ "inv_id": "10", "price": "925", "Files":[] }, { "inv_id": "11", "price": "925", "Files":[ { "filename": "a", "filepath":"zxc" }] }] } ]; //console.log(data) var result = data.filter(function (el) { if(el.source == "Kitchen"){ console.log(el.invoiceItems) el.invoiceItems.filter(function(inv){ console.log(inv.Files); if(inv.Files.length == 0) { return true; } }); } }); console.log("result",result)No estás devolviendo nada del filter exterior.
también puedes simplificar tu lógica de esta manera
var data = [{ "data_id": "1", "name": "abc", "source": "Hall", "sqft": "1100", "invoiceItems": [{ "inv_id": "1", "price": "925", "Files": [{ "filename": "a", "filepath": "zxc" }] }, { "inv_id": "2", "price": "925", "source": "tymetrix", "Files": [] } ] }, { "data_id": "2", "name": "def", "source": "Kitchen", "sqft": "1200", "invoiceItems": [{ "inv_id": "10", "price": "925", "Files": [] }, { "inv_id": "11", "price": "925", "Files": [{ "filename": "a", "filepath": "zxc" }] } ] } ]; //console.log(data) var result = data.filter((el) => el.source === "Kitchen" && el.invoiceItems.some(inv => inv.Files.length == 0) ); console.log("result", result)El único problema que veo en su código es que falta la tecla de retorno
//console.log(data) var result = data.filter(function (el) { if(el.source == "Kitchen"){ console.log(el.invoiceItems) return el.invoiceItems.filter(function(inv){ // here console.log(inv.Files); if(inv.Files.length == 0) { return true; } }); } }); console.log("result",result)