渲染特定的 javascript 对象

Rendering a specific javascript object

{
    questionText: 'What is 4 + 5?',
    answerOptions: [
        { answerText: '14', isCorrect: false },
        { answerText: '9', isCorrect: true },
        { answerText: '11', isCorrect: false },
        { answerText: '20', isCorrect: false },
    ],
},

我有这个 javascript 对象。如何呈现正确的选项,在本例中为“9”?

{
  questions.map((answerOption) =>
    answerOption.answerOptions.isCorrect ? (
      <div>{answerOption.answerOptions.answerText}</div>
    ) : null,
  );
}

我试过了,但它没有给我任何输出。

既然你不写,我猜你的对象叫questions

如果数组中只有一个对象(就像您发布的示例中那样),则必须执行以下操作:

{
  questions.answerOptions.map((answerOption) => 
     answerOption.isCorrect ? <div>{answerOption.answerText}</div> : null)
}

否则,如果数组中有多个对象,则可以将两个 map 一个放在另一个中:

{
  questions.map((answerOption) => 
      answerOption.answerOptions.map(el =>
         el.isCorrect ? <div>{el.answerText}</div> : null)
      )
}

我想你正在寻找这样的东西:

{questions.answerOptions.filter(option=>option.isCorrect).map(answer=><div>answer.answerText</div>)}

您的 answerOptions 是一个数组,因此您也需要对其进行迭代。您可以使用 Array#find() 方法找到 isCorrecttrue 的元素:

function App() {
  let questions = [
    {
      questionText: 'What is 4 + 5?',
      answerOptions: [
        { answerText: '14', isCorrect: false },
        { answerText: '9', isCorrect: true },
        { answerText: '11', isCorrect: false },
        { answerText: '20', isCorrect: false },
      ],
    }
  ];

  return (
    <div>
      {questions.map((question) => {
        let answer = question.answerOptions.find((i) => i.isCorrect);
        if (!answer) {
          console.log('Ooops, no way');
        }
        return (
          <p>
            The correct answer for "{question.questionText}" is <b>{answer.answerText}</b>
          </p>
        );
      })}
    </div>
  );
}

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);
<div id="root"></div>
<script src="https://unpkg.com/react/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom/umd/react-dom.production.min.js"></script>