Я пишу сложную рекурсивную функцию, которая работает с массивом объектов, которые включают друг друга.
Например, у меня есть объект, подобный этому:
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
или любой другой библиотеки массивов, поэтому любые советы будут полезны.