通过带有子对象的对象映射 - Javascript

时间:2017-07-23 04:14:04

标签: javascript reactjs mapping

我正在尝试通过对象“contentMap”(在数组“faqArray”中)进行映射,并访问对象“policy1”,“policy2”等内的“问题”和“回答”。

以下是我的示例json数据。

"faqArray": [{
    "contentMap": {
      "policy1": {
        "answer": "Cookies are small text files.",
        "question": "<strong>What are Cookies?</strong>"
      },
      "policy2": {
        "answer": "Please call the number.",
        "question": "<strong>How do I contact by phone?</strong>"
      },
      "policy3": {
        "answer": "bla bla",
        "question": "<strong>What is bla?</strong>"
      },
    },
    "header": ""
  },

]

下面是试图访问问题和答案的反应组件级代码。

{faqArray.map((faqInfoGroup, i) => [
    <div key={i}>
      <div className="faqQuestionGroup" dangerouslySetInnerHTML={this.createMarkup(faqInfoGroup.header)}></div>
        {Object.keys(faqInfoGroup).map((qaMap, i) =>
          <div className="faqQuestions" key={i}>
            Q.&nbsp; <a className="faqLinks" href={`#default_${qaMap.question}`} dangerouslySetInnerHTML={this.createMarkup(qaMap.question)}>  
            </a>
          </div>
        )}
      </div>
])}

使用上面的代码,我可以使用.map映射“faqArray”。我还可以使用Object.keys(faqInfoGroup).map映射对象“contentMap”。 但我真正的问题是在policy1,policy2和policy3中访问问题和答案。 Object.keys(faqInfoGroup).map给我“policy1”,“policy2”等作为字符串而不是对象。因此,policy1.answer,policy.question不起作用。

我也尝试了javascript forEach(),但仍然无法访问问题和答案。

如何访问“policy1”,policy2“和policy3”中的“问题”和“回答”?

请告诉我你的建议。这将是一个很大的帮助。

1 个答案:

答案 0 :(得分:2)

您应该能够faqInfoGroup.contentMap[qaMap].question(在@ abhi评论之后)

{faqArray.map((faqInfoGroup, i) => [
    {Object.keys(faqInfoGroup).map((qaMap, i) => {
        //faqInfoGroup.contentMap[qaMap].question
        //faqInfoGroup.contentMap[qaMap].answer
    })}
])}