как я могу сделать функцию выбора lodash в javascript? Я нашел следующее в "вам не нужен lodash"
function pickBy(object) {
const obj = {};
for (const key in object) {
if (object[key] !== null && object[key] !== false && object[key] !== undefined) {
obj[key] = object[key];
}
}
return obj;
}
но интересно другие реализации
Object.keys(obj).reduce((prev, x) => callback(obj[x]) ? { ...prev, [x] : obj[x] } : prev, {});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы создать _.pickBy(), вы можете использовать for...of с Object.entries(). Если предикат возвращает правдивый ответ для значения, присвойте ключ и значение объекту результата.
Примечание: если вам нужен _.pickBy() и вы не хотите использовать весь пакет lodash, вы можете импортировать файл выбрать по модулю.
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.info(pickBy({ a: 1, b: 0, c: 3 }));
console.info(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.info(pickBy({ a: 1, b: 0, c: 3 }));
console.info(pickBy({ a: 1, b: 0, c: 3 }, v => v < 3 ));Существование
var object = { 'a': 1, 'b': '2', 'c': 3 };
и обратный вызов метода, который применяется только к значениям объекта (_.isNumber):
Object.keys(obj).reduce((prev, x) => callback(obj[x]) ? { ...prev, [x] : obj[x] } : prev , {});
Решение Нины терпит неудачу, когда объект {}.
Вот мой:
const pickBy = (object, predicate = v => v) =>
Object.entries(object)
.filter(([k, v]) => predicate(v))
.reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});
вы пропустите необязательный предикат. а зачем тебе все чеки?