【问题标题】:How i can map this object我如何映射这个对象
【发布时间】:2021-07-17 18:53:26
【问题描述】:

我在映射对象时遇到了一些问题:

const questions = [
  {
    id:1,
    questionText: 'W którym roku firma apple wprowadziła do sprzedaży pierwszy komputer?',
    answerOptions: [
      { id: 1, answerText: 'A.1974', isCorrect: false, result: [] },
      { id: 2, answerText: 'B.1976', isCorrect: true, result: (correctAnswer) },
      { id: 3, answerText: 'C.1984', isCorrect: false, result: [] },
      { id: 4, answerText: 'D.1990', isCorrect: false, result: [] },
    ],
  }
]

我怎样才能映射像这样的对象?

我做了这样的事情,但接下来我遇到了问题(.answerOptionsundefined),当我尝试将我的数组更改为另一个数组时(在 DND 中可拖动拼接)

Questions[currentQuestion].answerOptions.map(
  ({ id, answerText, isCorrect, result }, index) => {
    return (
      <Draggable
        key={`draggable2-${id}`}
        draggableId={`draggable2-${id}`}
        index={index}
      >
        {(provided, snapshot) => {
          return (
            <div
              ref={provided.innerRef}
              {...provided.draggableProps}
              {...provided.dragHandleProps}
            >
              <div
                className="answer"
                onClick={() => handleAnswerClick(isCorrect)}
              >
                <div className="answerText">{answerText}</div>
                <div className={resultCorrect}>{result}</div>
              </div>
            </div>
          );
        }}
      </Draggable>
    );
  }
)

【问题讨论】:

  • Questions[currentQuestion](大写“Q”)是否正确?在之前的 sn-p 中,您写了 const questions = ...(带有小“q”)。

标签: javascript arrays reactjs dictionary object


【解决方案1】:

我认为您应该将questions 设为小写

questions[currentQuestion].answerOptions.map(

此外,为了确保questions[currentQuestion] 存在,您可以在之后添加问号,这样您就不会出现未定义的错误:

questions[currentQuestion]?.answerOptions?.map(

【讨论】:

  • 只是一个旁注/关于使用可选链 (?.) 的不请自来的意见:IMVHO 应该非常谨慎地使用它,否则它可能会成为“拐杖”,隐藏可能不会的问题导致代码停止运行,但仍然可以阻止它按预期工作。换句话说,当你不知道某些东西是否会被定义时,不应该随意使用可选链;应该使用它,因为您知道有些东西可能是未定义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多