Преобразование пикби lodash в javascript

как я могу сделать функцию выбора 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;
} 

но интересно другие реализации

вы пропустите необязательный предикат. а зачем тебе все чеки?

Nina Scholz 18.02.2019 10:27

Object.keys(obj).reduce((prev, x) => callback(obj[x]) ? { ...prev, [x] : obj[x] } : prev, {});

alejoko 18.02.2019 11:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
1 732
4

Ответы 4

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

function pickBy(object, predicate = v => v) {
    return Object.assign(
        ...Object
            .entries(object)
            .filter(([, v]) => predicate(v))
            .map(([k, v]) => ({ [k]: v }))
    );
}

Чтобы создать _.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 }), {});

Другие вопросы по теме