2014-11-26 3 views
1

제대로 작동하지 않는 배열을 정렬하려고합니다. 오류가 없으면 출력은 [10,5,12,15,38,45,16,1,6,5,2,25]로 표시됩니다. 함께 두 CONCAT자바 스크립트 - 정렬 문제

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); 
+2

당신이 함께 접착제 수 있다고 생각했다 무엇 쉼표가있는 두 개의 배열은 작동할까요? 결과는 문자열입니다. 이것을'Array'에 던져 넣으면 그 문자열을 하나의 요소로 갖는 배열을 만듭니다. 그것을 분류하는 것은 효과가 없습니다. – tadman

+1

Protip : [google "javascript merge arrays"] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) –

답변

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

는, 당신은 두 개의 배열을 결합 대신 .concat()를 사용한다

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

오름차순으로 정렬 내 정렬 code.Thanks으로 나에게 문제의 아이디어를주십시오 쉼표로. 두 배열을 쉼표로 결합하면 문자열이됩니다.

솔루션 : var arr3 = arr1.concat(arr2);

당신은 arr3에 .sort()를 호출 할 수 있습니다.