Как я могу улучшить мой отфильтрованный цикл объектов с помощью lodash?

1

Я перебираю issues в данных, отфильтрованных условием.

const rowObjects = Object.keys(data).filter((list) => {
  let issueRow = data[list];
  let destroyFilter = list._destroy:
    return !destroyFilter ? list : null;
}).
map((issue, key) => ({
  console.log(key + 1)

}));

Мне интересно, есть ли способ сделать это с помощью lodash?

  • 2
    Я голосую, чтобы закрыть этот вопрос как не по теме, потому что вопросы об улучшении дизайна рабочего кода принадлежат CodeReview.stackexchange.com.
  • 0
    Используйте _.filter() . lodash.com/docs/4.17.4#filter
Показать ещё 5 комментариев
Теги:
ecmascript-6
lodash

2 ответа

1
Лучший ответ

Я бы сделал что-то подобное, я только что узнал.

const filter = _.pickBy(data, (list) => {
 return //whatever you want 
  });
0

Глядя на свой код, из того, что я могу собрать, у вас есть ваши данные как литерал объекта, тогда вы помечаете ключ, который вы не хотите, с тегом _destroy.

Затем вам нужен еще один литерал объекта без отмеченного _destroy.

Ниже приведена версия, которая делает это без lodash. В lodash может быть проще, не уверен. Но способ ES6 для меня просто выглядит настолько естественным и легким для подражания. Это может быть даже проще выглядеть, разбивая биты на функции полезности, например. последнее сокращение может быть использовано в других местах, если вы хотите ключ/значение, преобразованный обратно в объектный литерал.

пс. Если вы не возражаете изменить оригинальный литерал объекта, это еще проще и, скорее всего, более высокая производительность. Такие вещи, как "Реакция", я считаю детерминированными данными, поэтому удаление на месте может и не быть вариантом.

const data = {
  a: {
    _destroy: true,
    value: "destroy this"
  },
  b: {
    value: "Keep Me!!"
  }
};

const data2 = 
  Object.entries(data).
  filter(([key, value]) => !value._destroy).
  reduce((obj, [key, value]) => (obj[key] = value) && obj, {});

console.log(data2);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню