Cómo obtener una matriz de objetos según el objeto y la lista de matrices usando javascript
devolver la matriz de objetos en función de dos condiciones
1. arrobj value is equal to obj valueid y el cid value should not include only listcode valor del código de lista
2. de lo contrario, si arrobj value is equal to obj valueid y codevalue is equal to cid
si no volver []
debe seguir las condiciones anteriores y devolver arrayobject usando javscript
var listcode =["IN","FI", "FR"]; var arrobj =[ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "SG", value: "2468"}, {id:3, name: "mar", cid: "SP", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj={ id:5, name: "zen", codevalue: "SP", valueid:"2468" } Expected Output [ {id:2, name: "feb", cid: "SG", value: "2468"}, {id:3, name: "mar", cid: "SP", value: "2468"}, ] var listcode =["IN","FI","FR"]; var arrobj1 =[ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "FI", value: "2468"}, {id:3, name: "mar", cid: "IN", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj1={ id:5, name: "zen", codevalue: "SP", valueid:"2468" } Expected Output [] const result = arrobj.filter(e => e.value === obj.valueid && listcode.includes(e.cid)); ``Es posible lograr eso filtrando el arrobj .
var listcode =["IN","FI", "FR"]; var arrobj =[ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "SG", value: "2468"}, {id:3, name: "mar", cid: "SP", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj={ id:5, name: "zen", codevalue: "SP", valueid:"2468" } const result = arrobj.filter((item) => { return item.value === obj.valueid && ( !listcode.includes(item.cid) || item.cid === obj.codevalue ) })¡Hiciste todo bien, solo agrega una negación antes !includes
// data1 var listcode1 = ["IN","FI", "FR"]; var arrobj1 = [ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "SG", value: "2468"}, {id:3, name: "mar", cid: "SP", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj1 = { id:5, name: "zen", codevalue: "SP", valueid:"2468"} // data2 var listcode2 = ["IN","FI","FR"]; var arrobj2 = [ {id:1, name: "jan", cid: "IN", value: "1234"}, {id:2, name: "feb", cid: "FI", value: "2468"}, {id:3, name: "mar", cid: "IN", value: "2468"}, {id:4, name: "apri", cid: "FI", value: "2345"}, ] var obj2 = { id:5, name: "zen", codevalue: "SP", valueid:"2468"} function getNewArray(inputList, obj, listCodes) { const result = inputList.filter(x => x.value === obj.valueid && (!listCodes.includes(x.cid) || x.cid === obj.codevalue)) return result; } console.log(getNewArray(arrobj1, obj1, listcode1)) console.log(getNewArray(arrobj2, obj2, listcode2))