函数内部的函数未执行

时间:2019-03-03 23:50:19

标签: javascript function

我需要一个返回对象数组的函数,但是目前,我得到一个空数组作为返回值。

我有以下代码:

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 :(得分:1)

在return语句之前添加的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;
    }
由于

中的要求,仅使用documents参数调用

addDocument Keep original key when re-looping through nested object