Is it possible to have an array filter another array from matching each character?
I have a set of logs and a filter that look like this:
logs = [{id:1, log: "log1"}], {id:2, log: "log2"}, {id:3, log: "fail"}
filter = ["log"]
it should return
[{id:1, log: "log1"}, {id:2, log: "log2"}]
If my filter were to be
filter = ["1", "fai"]
the output would be
[{id:1, log: "log1"}, {id:3, log: "fail"]
>Solution :
You can use the function Array.prototype.filter along with the function Array.prototype.some in order to filter out the objects that don’t match the filter.
const match = (filter, key, array) => array.filter(o => filter.some(c => o[key].includes(c))),
array = [{id:1, log: "log1"}, {id:2, log: "log2"}, {id:3, log: "fail"}];
console.log(match(["log"], "log", array));
console.log(match(["1", "fai"], "log", array));