Javascript 我能';不能对数组中的数字进行排序(尝试了此处编写的所有内容,但仍然无效)

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

我一直在用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];

然后你将比较数字,而不是数组。

我不认为
{return b-a}
按升序排序,同时显示你所使用的数组,以改变var allResults=data[1];至var allResults=数据[1][0];有什么事吗?看起来里面有一个额外的数组?解释一下函数
generateRandomNumber1
generateRandomNumber2
哦,谢谢,我还没想过:-)现在可以了。