I am calling a function with two arguments,
Arg 1: Object {a:1, b:2, c:3, d:4}
Arg 2: Condition ((prop, key) => prop >= 3))
Here based on the condition we need to filter the object and provide the result as array of objects.
The code that I have tried,
const pickBy = (a, b) => {
const data = Object.values(a).filter(b);
console.log(data)
}
pickBy({a:1, b:2, c:3, d:4}, ((prop, key) => prop >= 3))
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
Current Result: [3,4]
Expected Result: [{c:3}, {d:4}]
CodePudding user response:
You could get the entries, filter by handing over the right format for filtering function and build objects of filtered entries.
const
pickBy = (object, filterFn) => Object
.entries(object)
.filter(([k, v]) => filterFn(v, k))
.map(([k, v]) => ({ [k]: v }));
console.log(pickBy({ a: 1, b: 2, c: 3, d: 4 }, (prop, key) => prop >= 3));
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>