Estoy tratando de filtrar una colección con múltiples condiciones usando lodash, funciona bien con cadenas, pero quiero filtrar por una serie de identificaciones para la parte de las ubicaciones y cadenas para el estado. He intentado cambiar la identificación a la matriz de "location":{"id" :["1","4"]}, pero no funciona
const collection = [ {account: {id: "1", name: "a"}, location:{id: "1", name: "x"}, status: "ok"}, {account: {id: "2", name: "b"}, location:{id: "2", name: "x"}, status: "ok"}, {account: {id: "3", name: "c"}, location:{id: "4", name: "y"}, status: "failed"}, {account: {id: "4", name: "d"}, location:{id: "4", name: "y"}, status: "ok"},] let filterByConditions = { "location":{"id" :"1"}, "account":{ "id": "1"}, "status": "ok", }; let results = _.filter(collection, filterByConditions);Parece que está tratando de usar el método de filtro con la abreviatura "coincidencias". Esta abreviatura no admite una condición "o"; solo coincidencias exactas. Sin embargo, puede pasarle al método _.filter un predicado en su lugar, y funcionará:
const collection = [ {account: {id: "1", name: "a"}, location:{id: "1", name: "x"}, status: "ok"}, {account: {id: "2", name: "b"}, location:{id: "2", name: "x"}, status: "ok"}, {account: {id: "3", name: "c"}, location:{id: "4", name: "y"}, status: "failed"}, {account: {id: "4", name: "d"}, location:{id: "4", name: "y"}, status: "ok"},] let filterByPredicate = (elem) => { return elem.status === "ok" && elem.location.id === "1" && (elem.account.id === "1" || elem.account.id === "4"); }; let results = _.filter(collection, filterByPredicate);