Я не могу отсортировать числа в массиве (пробовал все, что здесь написано, стиль не работает) - PullRequest
0 голосов
/ 21 января 2019

Я провел небольшую игру в 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]];

           }

1 Ответ

0 голосов
/ 21 января 2019

Проблема в том, что вы пытаетесь отсортировать массив массивов.Когда вы объявляете другие переменные, вы поступаете так:

data[1][0][0]

Это означает, что data - это массив, содержащий хотя бы один массив, который содержит хотя бы один массив, содержащий ваши данные.

Однако, когда вы объявляете allResults (массив, который вы хотите отсортировать), вы устанавливаете его на один уровень выше - вы устанавливаете его равным массиву, содержащему массив, который содержит ваши данные.Таким образом, вы на самом деле сортируете массив массивов.

Чтобы это исправить, просто объявите allResults примерно так:

var allResults = data[1][0];

И тогда вы будете сравнивать числа, а не массивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...