Поскольку вы уже используете lodash, у вас есть доступ к _.flatMap
, _.map
и _.clone
.
К сожалению, с вашей структурой данных требуется перебор массивов в ваших данных, но в зависимости от того, чего вы пытаетесь достичь, существуют альтернативы _.each
.
Если вы хотите объединить все клонированные записи в fields
, которые вложены в каждую запись массива sections
, которые вложены в каждую запись массива data
, вы можете использовать следующий код:
function cloneFields(elt) { return _.map(elt.fields, _.clone) }
var allClonedFields = _.flatMap(data, elt => {
return _.flatMap(elt.sections, cloneFields);
});
Функция cloneFields()
инициализируется вне цикла для повышения производительности, поэтому она не 't создается на каждой итерации.
Этот код извлекает каждую запись в данных, затем из этой записи извлекает каждую запись в ключе section, затем возвращает клон каждой записи в ключе fields и затем присоединяется к ним.в один большой массив, дающий следующий результат:
[ { id: 1, name: 'field 1', value: 'value field 1' },
{ id: 2, name: 'field 2', value: 'value field 2' },
{ id: 5, name: 'field 3', value: 'value field 3' } ]