2016-08-21 3 views
0

나는 사용하여 문자열에 사전을 변환 할 angular2 같은거기에 각도 2에 대한 스트림 람다식이 있습니까?

: key1=value1&key2=value2&...

java8 스트림 작업을 같이 만들 수있는 방법이 있나요? 또는 우아한 방법?

내 시도입니다 :

mapToFormParamsString(dict : any) : string{ 
    var a = []; 
    for (var key in dict) { 
     if (dict.hasOwnProperty(key)) { 
      a.push(key+"="+dict[key]); 
     } 
    } 
    return a.join("&"); 
} 
+0

'encodeURIComponent'를 잊지 마세요! – Bergi

+0

'Object.keys (dict) .map (key => ...) .join ("&")'당신을 가야합니다. – Bergi

+0

''(&))' – Thomas

답변

1

그 또는 Array#reduce :

mapToFormParamsString(dict : any) : string{ 
    return Object.keys(dict).reduce(function(rv, key) { 
     return rv + "&" + key + "=" + dict[key]; 
    }, "").substring(1); 
} 

또는 타이프 라이터를 사용하여 (또는 ES2015 +)하고 같이 당신처럼

mapToFormParamsString(dict : any) : string{ 
    return Object.keys(dict).reduce((rv, key) => rv + "&" + key + "=" + dict[key], "").substring(1); 
} 

, 그 자신의 속성 이름 만 처리합니다.

+0

''이것은'&'에'&'를 남겨 두었다고 생각합니다. 처음. –

+0

@AsadSaeeduddin : 끝에 '.substring (1)'이 있음을 유의하십시오. –

+0

아, 좋은 지적이야. '+ ='가 정말로 필요합니까? 'reduce'는 반환 값에 대해서만 신경을 씁니다. –

관련 문제