2017-03-15 3 views
1

하위 배열의 두 배열을 병합하고 현재 카운터 뒤의 배열을 결과로 바꾸고 현재 카운터 하위 배열을 제거하려고합니다. 웬일인지, splice는 나를 위해 일하지 않고있다. 오류가 발생합니다 : arg.splice() 함수가 아닙니다. 누구나 이유를 설명 할 수 있습니까?하위 배열을 연결할 수 없습니다.

function sym(args) { 
    var arg = arguments; 
    for (var i = 0; i < arg.length; i++) {  
    if (arg[i+1]) { 
     arg[i+1] = flatten(arg[i], arg[i+1]); 
     arg.splice(i,1); 
    } 
    } 


    function flatten(arr1, arr2) { 
    return [arr1, arr2].reduce(
    function(a,b){ 
     return a.concat(b); 
    }, []); 
    } 
} 

sym([1, 2, 3], [5, 2, 1, 4]); 
+1

'arguments'는 배열이 아니며 "배열과 유사한"객체입니다. 그것을 배열로 "변환"해야합니다. 'var arg = Array.prototype.slice.call (arguments);' –

답변

1

해결 방법, 인수를 먼저 적절한 배열로 변환해야합니다. 바보 야.

+0

@gyre 나는 당신이 그렇게하기 위해 하루를 기다려야한다고 생각한다. – jdmdevdotnet