簡體   English   中英

我無法對數組中的數字進行排序(嘗試了此處編寫的所有內容,stil無法正常工作)

[英]I can't sort numbers in an array (tried everything that was written here, stil doesnt work)

我一直在用JS做一個小游戲,當我有一個包含4個數字的數組(其中一個是正確的結果,其他三個是隨機的)時,我明白了。 我需要對它們進行排序(升序),但似乎沒有任何效果。 我嘗試了此處提到的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];

然后,您將比較數字,而不是數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM