javascript - 我无法对数组中的数字进行排序(尝试了此处编写的所有内容,但仍然不起作用)

标签 javascript html arrays sorting object

我在 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/

相关文章:

javascript - 将数组转换为对象(指现有的帖子)

html - 是否有等同于 ▼ 的 html 实体?

php - foreach 循环内数据未按升序显示

javascript - 如何仅将 javascript 应用于 1 个表单中的 2 个表单提交按钮中的 1 个?

c# - 如何从xPath中删除<a>元素?

java数组,执行正数和负数

javascript - 遍历 NodeList : Array. prototype.forEach.call() vs Array.from().forEach

javascript - 使用 javascript 将表单输入值插入 href 目标 URL

javascript - React js连接数据库

javascript - 如何在条件语句中使用动态创建的 JavaScript 对象?