Функция внутри функции не выполняется - PullRequest
0 голосов
/ 04 марта 2019

Мне нужна функция, которая возвращает массив объектов, но в настоящее время я получаю пустой массив в качестве возвращаемого значения.

У меня есть этот код:

componentWillMount() {
    const data = {
        invoice: {
            documentID: '_e4564',
            displayName: '2019-02-03',
            url: 'https://www.urltoinvoice.com'
        },

        conditions: {
            documentID: '_e9365',
            displayName: 'Conditions company x',
            url: 'https://www.urltoconditions.com'
        },

        reminders: [
            {
                documentID: '_e4364',
                displayName: 'First reminder',
                url: 'https://www.urltofirstreminder.com'
            },
            {
                documentID: '_e0254',
                displayName: 'Second reminder',
                url: 'https://www.urltosecondreminder.com'
            },
        ]
    }

    this.setState({ 
        documents: this.getDocuments(data)
    })
}

getDocuments = documents => {
    const arr = [];

    function addDocument(documents, labelKey) {
        Object.entries(documents).forEach(([key, val]) => {
            if (Array.isArray(val)) {
                addDocument(val, key);
            } else {
                arr.push({ documentID: val.documentID, displayName: `${labelKey || key}: ${val.displayName}` });
            }
        });
    };

    return arr;
}

На данный момент код не выполняет функцию addDocument.Кто-то может сказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 04 марта 2019

Вызов addDocument добавлен перед оператором возврата:

getDocuments = documents => {
      const arr = [];

      function addDocument(documents, labelKey) {
        Object.entries(documents).forEach(([key, val]) => {
            if (Array.isArray(val)) {
                addDocument(val, key);
            } else {
                arr.push({ documentID: val.documentID, displayName: `${labelKey || key}: ${val.displayName}` });
            }
        });
      };

      addDocument(documents) ;

      return arr;
    }

addDocument вызывается только с параметром документов из-за требований Сохранять исходный ключ при повторном цикле через вложенный объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...