我在 JS 中做了一个小游戏,当我有一个包含 4 个数字的数组时(其中一个是正确的结果,其他 3 个是随机的),我得到了重点。我需要对它们进行排序(升序),但似乎没有任何效果。我尝试了这里提到的 E6 和 E2015 功能,但没有任何结果。我包括我的代码以及控制台中的代码,以便您看到。您知道如何处理或者问题出在哪里吗?感谢您抽出时间。
//this is the code i have:
var rnum1 = generateRandomNumber1 ();
var rnum2 = generateRandomNumber2 ();
var rnums = [rnum1, rnum2];
var rnumsSort = rnums.sort(function(a, b){return b-a});
var data= generateRandomOperatorAndCorrectResult(rnumsSort[0],rnumsSort[1]);
//data=["+", [5]]
var operator=data[0];
var corResult = data[1][0][0];
var ranResult =[data[1][0][1],data[1][0][2],data[1][0][3]];
var allResults = data[1];
var sortAllResults = allResults.sort(function(a,b){
return a - b});
var mes=alert(sortAllResults);
//I'm sure all of my function are working because it alerts the actual 4 numbers in the array (var allResults = data[1]) but it doesnt do the sort method
function generateRandomOperatorAndCorrectResult (num1, num2) {
var operators = [{
sign: "+",
method: function(rnum1,rnum2){ return rnum1 + rnum2; } },
{
sign: "*",
method: function(rnum1,rnum2){ return rnum1 * rnum2; } },
{
sign: "-",
method: function(rnum1,rnum2){ return rnum1 - rnum2; }
}];
var results = [];
var selectedOperator = Math.floor(Math.random()*operators.length);
var randomOperator = operators[selectedOperator].sign;
var correctResult = (operators[selectedOperator].method(num1, num2)); //pass the numbers to the methods
results.push(correctResult);
var randomResult = generateRandomResults(3);
var result = results.concat(randomResult);
return [randomOperator, [result]];
}
最佳答案
问题是您正在尝试对数组数组进行排序。当你声明其他变量时,你会像这样:
data[1][0][0]
这意味着data
是一个数组,至少包含一个数组,其中至少包含一个数组,其中包含您的数据。
但是,当您声明 allResults
(要排序的数组)时,您将其设置为上一级 - 您将其设置为等于包含数组的数组,该数组包含您的数据。所以你实际上是在对数组的数组进行排序。
要解决此问题,只需声明 allResults
如下:
var allResults = data[1][0];
然后您将比较数字,而不是数组。
关于javascript - 我无法对数组中的数字进行排序(尝试了此处编写的所有内容,但仍然不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54288231/