Как фильтровать объект на основе условного аргумента?

#javascript

Вопрос:

Я вызываю функцию с двумя аргументами,

Аргумент 1: Объект {a:1, b:2, c:3, d:4}

Аргумент 2: Условие ((prop, key) =gt; prop gt;= 3))

Здесь на основе условия нам нужно отфильтровать объект и предоставить результат в виде массива объектов.

Код, который я пробовал,

 const pickBy = (a, b) =gt; {  const data = Object.values(a).filter(b);  console.log(data) }  pickBy({a:1, b:2, c:3, d:4}, ((prop, key) =gt; prop gt;= 3)) 

Текущий Результат: [3,4]

ожидаемый результат: [{c:3}, {d:4}]

Комментарии:

1. вы фильтруете ключи объекта a. Ни один ключ не соответствует вашей функции фильтра

2. @NumanIjaz, Извините, что отредактировал сейчас..

Ответ №1:

Вы можете получить записи, отфильтровать, передав нужный формат для функции фильтрации, и построить объекты из отфильтрованных записей.

 const  pickBy = (object, filterFn) =gt; Object  .entries(object)  .filter(([k, v]) =gt; filterFn(v, k))  .map(([k, v]) =gt; ({ [k]: v }));  console.log(pickBy({ a: 1, b: 2, c: 3, d: 4 }, (prop, key) =gt; prop gt;= 3)); 

Комментарии:

1. Это сработало.. Спасибо..