Чтобы создать _.pickBy()
, вы можете использовать for...of
с Object.entries()
.Если предикат возвращает верный ответ для значения, присвойте ключ и значение результирующему объекту.
Примечание: если вам требуется _.pickBy()
, и вы не хотите использовать весь пакет lodash, вы можете импортироватьмодуль pickBy .
function pickBy(object, predicate = v => v) {
const obj = {};
for (const [key, value] of Object.entries(object)) {
if (predicate(value)) obj[key] = value;
}
return obj;
}
console.log(pickBy({ a: 1, b: 0, c: 3 }));
console.log(pickBy({ a: 1, b: 0, c: 3 }, v => v < 3 ));
В наши дни вы можете получать записи, фильтровать их по значению и конвертировать обратно в объект с помощью Object.fromEntries()
:
const pickBy = (object, predicate = v => v) =>
Object.fromEntries(Object.entries(object).filter(([, v]) => predicate(v)))
console.log(pickBy({ a: 1, b: 0, c: 3 }));
console.log(pickBy({ a: 1, b: 0, c: 3 }, v => v < 3 ));