我想在状态下构建一个名为scores的数组,该数组将包含5个数组,其中四个对象包含scores 4-1和ID。当用户单击“下一步”时,前3个对象被添加,最后一个对象应自动添加,因为它将是唯一剩余的选项。但是,当我到达倒数第二个选项并单击“下一步”时,要么不添加最后一个选项,要么倒数第二个选项被最后一个选项代替。以下是我拥有的脚本:
dealWithNextButton = () => {
const { statements, scores } = this.state;
const { score } = this.props.match.params;
const idxOfPart = this.matchPartToIdx();
for (let i in statements[idxOfPart]) {
let id = statements[idxOfPart][i].id;
if (statements[idxOfPart][i].isSelected) {
if (!statements[idxOfPart][i].prevSelected) {
this.setState({
prevSelected: statements[idxOfPart][i].prevSelected = true,
scores: scores.map((item, index) => index === idxOfPart ? [...item, {'id': id, 'score': score}] : item)
})
}
} else if (score === "2") {
this.setState({
scores: scores.map((item, index) => index === idxOfPart ? [...item, {'id': id, 'score': "1"}] : item)
})
}
}
}
当前输出:
//either this
[{id: "O1", score: 4}, {id: "G1", score: 3}, {id: "B1", score: 2}]
//or this
[{id: "O1", score: 4}, {id: "G1", score: 3}, {id: "R1", score: 1}]
和预期的输出:
[{id: "O1", score: 4}, {id: "G1", score: 3}, {id: "B1", score: 2}, {id: "R1", score: 1}]
请让我知道是否需要进一步澄清。
谢谢!
据我所知
...项目是{id:“ O1”,得分:4},{id:“ G1”,得分:3},
但不是添加的内容。因此,当..items中添加了其他内容时,它只会是{id:“ O1”,得分:4},{id:“ G1”,得分:3},+添加的内容。