2013-12-10 1 views
0

나는이 같은 감소 기능이 있습니다구조화 된 함수 인수에서 "_arg"의 이름을 바꾸려면 어떻게해야합니까?

ops = rqOps.reduce (p, { commit: id: cid, type: type }, idx, arr) -> 
    # Do stuff here 
    p 
, {} 

잘 작동하지만 지금은 두 번째 인수의 이름 _arg에 컴파일합니다. 어떻게 다른 이름을 부여 할 수 있습니까? 나는 arg = { commit: id: cid, type: type }{ commit: id: cid, type: type } : arg{ commit: id: cid, type: type } = arg과 같은 몇 가지 다른 접근법을 시도했지만 아무런 결과도 얻지 못했습니다. 구문에 어떤 문제가 있습니까?

답변

2

왜 두 번째 인수가 호출되는지 신경 써야합니까? 당신의 객체 파괴는 당신이 그 논쟁으로 전혀 일하지 않을 것이라는 것을 의미합니다. 대신 cidtype으로 작업 할 것입니다. _arg의 이름과 그 존재 여부는 변경 될 수 있으며 귀하의 비즈니스는 변경 될 수 있습니다. 예를 들어

,이 경우 :

rqOps = [ 
    { commit: { id: 1, type: 2 } } 
    { commit: { id: 2, type: 4 } } 
] 
ops = rqOps.reduce (p, { commit: id: cid, type: type }, idx, arr) -> 
    console.log(cid, type) 
    p 
, { } 

다음 콘솔에 1, 22, 3를 얻을 수 있습니다합니다. 두 번째 인수를 모두 원한다면 이름을 지정하고 반복자 함수 내부에 압축을 풉니 다.

ops = rqOps.reduce (p, arg, idx, arr) -> 
    { commit: id: cid, type: type } = arg 
    #... 
+0

마지막 블록은'_arg'를 arg로 대체합니다. 컴파일 된 코드에는 다른 차이점이 없습니다. – hpaulj

+0

@hpaulj : 죄송합니다. 처음에는 내 의견을 잘못 읽었습니다. 내 눈은 "하지"않고 "보지 못합니다."라고 보았습니다. –

+0

두 번째 인수는 해당 속성 중 일부만 파기하기 때문에 참조하고 싶습니다. 객체가 100 개의 속성을 갖고 있고 다른 객체에 액세스 할 수있을 때만 객체 2 개를 분해하고 싶습니다. – zakdances

관련 문제