Работа с массивом объектов и его значениями. npm модуль / libabry / классы - PullRequest
0 голосов
/ 18 апреля 2020

Я пишу сложную рекурсивную функцию, которая работает с массивом объектов, которые включают друг друга.

Например, у меня есть объект, подобный этому:

let item = {
   name: "Test",
   key: "value",
   pricing_methods: [ [Objects], [Objects] ] //array of object
}

где pricing_methods значение - это массив массивов с массивом объектов внутри:

[ 
   [
      { key: 'CONST', count: 1, reagent_items: [ {Object}, {Object} ] },
      { key: 'COMMDTY', count: 1, reagent_items: [ {Object}, {Object} ] }
   ],
   [
      { key: 'CONST', count: 2, reagent_items: [ {Object}, {Object} ] },
      { key: 'COMMDTY', count: 1, reagent_items: [ {Object}, {Object} ] },
      ...
   ],
   [
      ...
   ]
]

, и, как вы уже догадались, это reagent_items это массив объектов / элементов с самого начала, которые также имеют свои собственные pricing_methods и так далее ...

Если вы видели «Начальный» фильм Кристофера Нолана ie, то он какой-то подобный.

ПРОБЛЕМА

Так что, как вы, возможно, уже видели, мне нужно работать с массивами объектов и их свойствами. Итак, вот мой вопрос:

Что такое оптимизация или универсальная практика, npm module / библиотека для таких операций, как удаление / добавление / группировка / размотка объекта внутри массива на основе значения объекта?

Особенно мне нужны были операции группировки / размотки для значений объекта внутри массива, как этого добиться:

   [
      { key: 'CONST', count: 1, reagent_items: [ {Object}, {Object} ] },
      { key: 'COMMDTY', count: 1, reagent_items: [ {Object}, {Object} ] }
   ]

этот:

[
   {
       name: "reagent_items#1",
       all_keys: "all_values#1",
       key: 'CONST',
   },
   {Object}, //all items for CONST and COMMDTY keys combined.
   {
       name: "reagent_items#2",
       all_keys: "all_values#2",
       key: 'COMMDTY',
   }
]

  • Должен ли я определить свой собственный class для каждого предмета / метода ценообразования с методами получения / установки
  • Определите мой собственный array.method, например array.GroupByValue()
  • Или лучше использовать lodash или _underscore или любую другую библиотеку, которая предоставляет такие же методы, как этот?

PS Я не знаю всех возможностей lodash или любой другой библиотеки массивов, поэтому любые советы будут полезны.

...