我在stackoverflow中发现了一个随机播放对象的函数,但是我需要随机播放该对象内部的对象:
为便于理解,我在console.log中复制了一部分对象:
(2) [{…}, {…}]
0:
component: Array(6)
0: {id: 91, type_desc: "enunciado", content: "O novo Guia Alimentar para a População Brasileira"}
1: {id: 92, type_desc: "alternativa", content: "são geralmente consumidos em pequenas"}
2: {id: 93, type_desc: "alternativa", content: "são formulados e embalados para serem"}
3: {id: 94, type_desc: "alternativa", content: "tendem a ter pouca fibra, em decorrência da"}
4: {id: 95, type_desc: "alternativa", content: "apresentam embalagens e conteúdos diferenciados"}
5: {id: 96, type_desc: "alternativa", content: "possuem uma baixa quantidade de calorias por"}
length: 6
__proto__: Array(0)
id: 16
question_content_id: 1
__proto__: Object
1:
component: Array(6)
0: {id: 31, type_desc: "enunciado", content: "A partir das ideias sugeridas pela charge, avalie as "}
1: {id: 32, type_desc: "alternativa", content: "As asserções I e II são proposições verdadeiras,"}
2: {id: 33, type_desc: "alternativa", content: "As asserções I e II são proposições verdadeiras, mas a II não"}
3: {id: 34, type_desc: "alternativa", content: "A asserção I é uma proposição verdadeira, e a II é "}
4: {id: 35, type_desc: "alternativa", content: "A asserção I é uma proposição falsa, e a II é uma"}
5: {id: 36, type_desc: "alternativa", content: "As asserções I e II são proposições falsas"}
length: 6
__proto__: Array(0)
id: 6
question_content_id: 1
__proto__: Object
我在问题中使用了该函数,但我想在组件中使用:
api.get("/evaluation/" + this.state.evaluation_id + "/")
.then(response => {
this.setState({
questions: shuffleArray(response.data.question)
)}
答案 0 :(得分:1)
有一些方法可以解决您的问题。其中之一是实现shuffleQuestions
函数,为此,您可以使用shuffleArray
函数:
function shuffleArray(array) {
var currentIndex = array.length, temporaryValue, randomIndex
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex)
currentIndex -= 1
// And swap it with the current element.
temporaryValue = array[currentIndex]
array[currentIndex] = array[randomIndex]
array[randomIndex] = temporaryValue
}
return array
}
function shuffleQuestions(questions) {
questions = shuffleArray(questions)
questions.forEach((v, index) => {
questions[index]['component'] = shuffleArray(questions[index]['component'])
})
return questions
}
let questions = [
{id: 3, component: [{id: 1}, {id: 2}, {id: 3}]},
{id: 1, component: [{id: 1}, {id: 2}, {id: 3}]},
{id: 2, component: [{id: 1}, {id: 2}, {id: 3}]}
]
console.log(shuffleQuestions(questions))
我希望我不要误会你的问题
答案 1 :(得分:0)
可以提供您要说的数组吗?
无论如何,我可以为您的问题提供逻辑。 试试这个:
for(var i = 0; i < array.length; i++){
array[i] = shuffleArray(array[i]);
}
array = shuffleArray(array);