Реструктуризация JSON в JavaScript

Не обрезайте [], и все должно быть в порядке. [] идентифицируют массив JSON, который именно то, что вам нужно, чтобы выполнять итерацию его элементов.

0
задан mv_cl 26 March 2019 в 06:18
поделиться

1 ответ

Если я вас правильно понимаю, вы хотите объединить все страницы в одну страницу, которая содержит всю информацию.

Этого можно добиться с помощью функции Array.reduce. reduce берет массив и объединяет все элементы в одно значение, используя функцию (предоставленную вами) для объединения первых двух элементов, пока не останется только один (т. Е. 1 * 2 => new1; new1 * 3 => new2, где * представляет вашу функцию).

Ваша проблема будет выглядеть примерно так:

rows[0].pages = rows[0].pages.reduce((currentElement, currentState) => {
    if (!currentState) { // first iteration return first element but make sure display is an array
        currentElement.sections[0].answers[0].valuesMetadata[0].display =
            [currentElement.sections[0].answers[0].valuesMetadata[0].display];
        return currentElement;
    }

    // add values of current element to arrays in current state
    currentState.sections[0].answers[0].values
        .concat(currentElement.sections[0].answers[0].values);
    currentState.sections[0].answers[0].valuesMetadata[0].display
        .concat(currentElement.sections[0].answers[0].valuesMetadata[0].display);
    return currentState;
});

currentElement - это объект массива, который в настоящее время сокращается, currentState - промежуточный результат сокращения.

PS:

Объект выглядит так, как будто вы слишком много массивов там, где они вам не нужны. Данный фрагмент кода работает только для первого элемента в каждом массиве (отсюда [0]). Если у вас действительно есть несколько значений в каждом массиве, вам придется перебирать все эти значения соответственно.

0
ответ дан Scorpioo590 26 March 2019 в 06:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: