Javascript 我能';不能对数组中的数字进行排序(尝试了此处编写的所有内容,但仍然无效)
我一直在用JS做一个小游戏,当我有一个包含4个数字的数组(其中一个是正确的结果,另外3个是随机的)时,我说到点子上了。我需要对它们进行排序(升序),但似乎没有任何效果。我尝试了这里提到的E6和E2015函数,但什么都没有。我将我的代码加上控制台中的代码,以便您查看。你知道怎么处理吗?问题在哪里?谢谢你抽出时间Javascript 我能';不能对数组中的数字进行排序(尝试了此处编写的所有内容,但仍然无效),javascript,html,arrays,sorting,object,Javascript,Html,Arrays,Sorting,Object,我一直在用JS做一个小游戏,当我有一个包含4个数字的数组(其中一个是正确的结果,另外3个是随机的)时,我说到点子上了。我需要对它们进行排序(升序),但似乎没有任何效果。我尝试了这里提到的E6和E2015函数,但什么都没有。我将我的代码加上控制台中的代码,以便您查看。你知道怎么处理吗?问题在哪里?谢谢你抽出时间 //this is the code i have: var rnum1 = generateRandomNumber1 (); var rnum2 = ge
//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];
然后你将比较数字,而不是数组。我不认为
{return b-a}
按升序排序,同时显示你所使用的数组,以改变var allResults=data[1];至var allResults=数据[1][0];有什么事吗?看起来里面有一个额外的数组?解释一下函数generateRandomNumber1
和generateRandomNumber2
哦,谢谢,我还没想过:-)现在可以了。