我正在尝试对无法正常工作的数组进行排序。没有错误,只是输出显示为:[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);
答案 0 :(得分:3)
您的问题不在于排序,而是将两个输入数组合并到arr3
中。
var combine = arr1 + "," + arr2;
创建一个字符串,其中包含以逗号分隔的arr1
和arr2
的所有元素。然后
var arr3 = new Array(combine);
创建一个只包含1个元素的数组,即该字符串。你可以使用:
var arr3 = combine.split(',');
但最好首先使用适当的函数来附加数组:
var arr3 = arr1.concat(arr2);
答案 1 :(得分:1)
将两者合并,然后按升序排序
var arr3 = (arr1.concat(arr2)).sort(function(a,b){return a-b;});
答案 2 :(得分:1)
你应该使用.concat()
而不是用逗号组合两个数组。将两个数组与逗号组合将产生一个字符串。
溶液:
var arr3 = arr1.concat(arr2);
然后你可以在arr3上调用.sort()
。