How to get array of objects based on object and arraylist using javascript
return the array of objects based on two conditions
1.if arrobj value is equal to obj valueid
and cid value should not include only listcode
value
2.else if arrobj value is equal to obj valueid
and codevalue is equal to cid
else return []
should follow above conditions and return arrayobject using 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));
``
You did everything right, just add a negation before !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))