У меня есть приложение-викторина в моем проекте React, где я беру некоторые данные из api:
вопрос неверные ответчики правильный ответ
Теперь я хочу составить набор неправильных и правильных ответов и сопоставить их, чтобы пользователи получали все возможные ответы в случайном порядке.
У меня возникают проблемы с созданием массива allAnswers
componentDidMount(){
axios.get('https://opentdb.com/api.php?amount=50').then( response =>{
for(var key in response.data.results){
const question = [...this.state.question, response.data.results[key].question]; // here i put the data into state in each category
const answer = [...this.state.answer, response.data.results[key].correct_answer];
const wrongAnswers = [...this.state.wrongAnswers, response.data.results[key].incorrect_answers];
const allAnswers = [wrongAnswers, answer] // here im trying to collec all possible answers and then later make a handler to check if the given answer was right or wrong
this.setState( prevState => ({
question: question,
answer: answer,
wrongAnswers: wrongAnswers,
allAnswers: allAnswers,
}));
}
});
}so i save 50 questions and respective answers and wrong answers to not send net work requests all the time.
Then i have made a random counter, that i use to map a random question
<p>{this.state.question[this.state.random]}</p>
i then map through the array of all the answers to get each answer displayed
{this.state.random !== undefined && this.state.wrongAnswers[this.state.random] !== undefined && this.state.allAnswers[this.state.random].map((answer, index) => {
console.info(this.state.allAnswers[this.state.random])
return(
<form >
<input type = "radio" name = "name" value = "!!" /> {answer}<br/>
</form>
)
})
})
Моя проблема здесь в том, что массив allAnswers - это просто неправильные ответы, и я не могу найти способ собрать все правильные и неправильные ответы соответствующим образом внутри государства.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать оператор распространения для объединения двух массивов.
const answer = [...this.state.answer, response.data.results[key].correct_answer];
const wrongAnswers = [...this.state.wrongAnswers, response.data.results[key].incorrect_answers];
const allAnswers = [...answer, ...wrongAnswers];
В результате получится массив, содержащий элементы как answer, так и invalidAnswers.
Надеюсь это поможет.
проблема в том, что ответ представляет собой строку, и это приведет к объединению со строкой
Я пробовал, и появляется сообщение об ошибке this.state.allAnswers [this.state.random] .map не является функцией, когда я пытаюсь отобразить через него