如何添加一些随机性来填充此列表

How can I add some randomness to populating this list?

本文关键字:随机性 填充 列表 何添加 添加      更新时间:2023-09-26

我正在尝试填充测验中的答案列表。正确的答案总是数据对象中的a0。我怎么能让第一个答案不总是正确的呢?一个提示将不胜感激!

JS:

data = [
        {"q":"How much?", "a0":"20%", "a1": "1%", "a2": "10%", "a3": "5%"},
        {"q":"What", "a0":"Ball", "a1": "Stone", "a2": "Bierd", "a3": "Carl"},
        {"q":"When?", "a0":"1999", "a1": "2000", "a2": "2001", "a3": "2002"}
        ];
function addData() {
var ids =['a','b','c','d'];
for (var j=0; j < ids.length; j++) {
    //Populate answers into list
    document.getElementById(ids[j]).innerHTML = data[q]['a'+j];
    //Add class 'correct' to the li with the right answer (always a0 in the data object)
    if (j==0) {
    document.getElementById(ids[j]).setAttribute('class', 'correct');
    }
};
}

HTML:

<ul class="answerswers_quiz">
<li id="a"></li>
<li id="b"></li>
<li id="c"></li>
<li id="d"></li>
</ul>

只需使用随机数对数组进行排序:

var ids =['a','b','c','d'];
ids.sort(function(x, y) {
    return parseInt(Math.random() * ids.length);
});
for (var j=0; j < ids.length; j++) {
    //.....
}

实时测试用例。(随机排序)

您可以生成一个随机数,并将其用作数组的位置,当然,始终验证其长度和您得到的数字。

你可以使用类似的东西生成一个随机数:

var randomnumber = Math.random();

您可以对数组进行随机排序,也可以按排序顺序进行排序。

你的数组是字符串数组,你的答案按字母顺序排列并不重要,所以你可以尝试按字母排序。

下面的例子是对字符串数组进行排序。

//Sort alphabetically and ascending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort() //Array now becomes ["Amy", "Bob", "Bully"]
//Sort alphabetically and descending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort()
myarray.reverse() //Array now becomes ["Bully", "Bob", "Amy"]

参考http://www.javascriptkit.com/javatutors/arraysort.shtml

现在,若你们想按它的索引排序,你们可以使用下面的。

function randomSort(a,b) {
    return( parseInt( Math.random()*10 ) %2 );
}
var arlene = new Array( 1, 2, 3, 4, 5 );
alert( arlene.sort(randomSort).toString() );

参考http://freewebdesigntutorials.com/javaScriptTutorials/jsArrayObject/randomizeArrayElements.htm

这保持了答案的顺序,只改变了哪个是第一个。

在for循环之前做随机整数:CCD_ 2,则循环中的第一件事做CCD_ 3。使用data[q][idx]而不是data[q]['a'+j],并将类设置为在idx=="a0"而非j==0时进行更正。