I need to be able to evaluate (True/False) some conditions not using Eval method. I came across this awesome technique which suits my needs: https://stackoverflow.com/a/68822307/9481833
Now I am trying to implement something like a Like operator and found the test function. Tried to amend the example as per the below but no joy:
const conditionalArray = [
{ name: "fridge", condition: "like", value: "sam" },
];
const dataTofilter = [
{ line: "Blah", revene: 3, sale: 2, fridge: "samsung" },
];
const conditions = {
'like': (x, y) => x.test(/y/),
};
const result = dataTofilter.filter(data => {
for (const el of conditionalArray) {
if (!conditions[el.condition](data[el.name], el.value)) {
return false;
}
}
return true;
});
console.log(result);
Error message is that 'test' is not a function. Perhaps I'll need to handle this case in the filter codeblock at the bottom and look for the 'like' operator and handle it there ?