I got an array of object
const devices = [{
deviceLocation: {
label: "Pure",
value: "pure"
},
deviceName: "test7"
devicePaymentMethods: [{
label: "ab",
value: "ab"
} {
label: "cd",
value: "cd"
} {
label: "ef",
value: "ef"
}]
deviceType: "iPad"
id: "001"
connected: false
enabled: false
},
{
deviceLocation: {
label: "kandy",
value: "kandy"
},
deviceName: "test4"
devicePaymentMethods: [{
label: "ab",
value: "ab"
} {
label: "cd",
value: "cd"
}]
deviceType: "iPad"
id: "004"
connected: false
enabled: false
}
]
I want to filter the array by object using deviceName,deviceLocation and devicePaymentMethods
Here is what I have already done and it is working for deviceName and deviceLocation but doesn't work for devicePaymentMethods
const filterByValue = (array, string) => {
return array.filter(o =>
Object.keys(o).some(k => {
if (k === "deviceName") {
return o[k].toLowerCase().includes(string.toLowerCase());
} else if (k === "deviceLocation") {
return o[k].label.toLowerCase().includes(string.toLowerCase());
} else if (k === "devicePaymentMethods") {
o[k].map(pay => {
if(pay.label.toLowerCase().includes(string.toLowerCase()))
return pay;
});
}
})
);
};
filterByValue(devices, "ab")
filterinstead ofmap