Javascript - 排序问题

时间:2014-11-26 19:32:36

标签: javascript

我正在尝试对无法正常工作的数组进行排序。没有错误,只是输出显示为:[10,5,12,15,38,45,16,1,6,5,2,25]。请告诉我排序代码的问题。谢谢

var arr1 = [10, 5, 12, 15, 38, 45, 16];
var arr2 = [1, 6, 5, 2, 25];
var arr3 = merge(arr1, arr2);

function merge(arr1, arr2) {

    var combine = arr1 + "," + arr2;

    var arr3 = new Array(combine);

    for (var i = 0; i < arr3.length; i++) {

        arr3.sort(function (n1, n2) {
           return n1-n2;
        });
    }
       document.writeln("Array 3 sorted: " + arr3);

       return arr3;
  }

  merge(arr1, arr2);

3 个答案:

答案 0 :(得分:3)

您的问题不在于排序,而是将两个输入数组合并到arr3中。

var combine = arr1 + "," + arr2;

创建一个字符串,其中包含以逗号分隔的arr1arr2的所有元素。然后

var arr3 = new Array(combine);

创建一个只包含1个元素的数组,即该字符串。你可以使用:

var arr3 = combine.split(',');

但最好首先使用适当的函数来附加数组:

var arr3 = arr1.concat(arr2);

请参阅MDN documentation

答案 1 :(得分:1)

将两者合并,然后按升序排序

var arr3 = (arr1.concat(arr2)).sort(function(a,b){return a-b;});

答案 2 :(得分:1)

你应该使用.concat()而不是用逗号组合两个数组。将两个数组与逗号组合将产生一个字符串。

溶液: var arr3 = arr1.concat(arr2);

然后你可以在arr3上调用.sort()