2017-01-06 2 views
0

함수에 전달 된 숫자를 기준으로 문자를 분할하고 문자열의 문자를 반대로 변환하는 함수를 만들려고합니다. 나는 되돌아온 문자를 다시 결합하고 값을 반환하는 것에 매달린다.함수에 전달 된 숫자와 문자열을 기반으로하는 문자열에서 문자 반전

function spinCharN(string, number) { 
     var group1 = string.split(''); 
     var group2 = []; 
     var group3; 

     return group1.forEach(function (str) { 
     group2.push(str); 

     if (group2.length === number) { 
      group3 += (group2.reverse(''));//this is where the debugger informs me of my mistake 

      group2 = []; 
     } 
     }); 
    return group3; 
    } 
    result = spinCharN('original choco tacos?', 3); 

console.log(result) 
// => ironig laohc occat?so 

문자를 뒤집는 데 더 청결한/기능적/더 좋은 방법이 있습니까?

+0

에 참여 역방향 각 그룹을

  • 그룹으로 문자열을 분할하기 해야 할 것. 문자열에서 문자를 뒤집는 데 사용되는 숫자는 어떤 방식으로 예상됩니까? – CollinD

  • 답변

    1
    1. 사용 Javascript .split() a string for each number of characters
    2. 당신은 정말 무슨 코드를 설명하지 않은 모든 그룹

    function spinCharN(string, number) { 
     
        if (number >>> 0 !== number) throw Error('Invalid number'); 
     
        var groups = string.match(new RegExp('.{1,'+number+'}', 'g')) || ['']; 
     
        return groups.map(function (str) { 
     
        return str.split('').reverse().join(''); 
     
        }).join(''); 
     
    } 
     
    console.log(spinCharN('original choco tacos?', 3));

    +0

    감사합니다. 왜 호기심 때문에, >>>, 오른쪽 채우기 비트 이동 연산자를 0으로 채웠습니까? 나는 SO, mdn에 대한 설명을 찾아 보았고 어떤 자원도 나에게 어떤 의미도 만들어주지 않았다. 또한 비트 연산자에 대한 사용 사례와 관련하여 제가 지적 할 수있는 리소스가 있습니까? –

    +0

    여러 알림도 죄송합니다. 방금 배운 내용 [@replies는 어떻게 작동합니까?] (http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work) –

    +1

    @ Alt-RockNinjaCowgirl 음,'>>>'여기 regex injection 취약점을 예방하기위한 빠른 해킹입니다. 'number >>> 0'은'ToUint32 (number)'를 반환합니다. 즉, 부호없는 32 비트 정수로 변환합니다. 비교 결과 'number'는 0 ... 4294967295 (포함) 범위의 정수입니다. 아마도'Number.isInteger (number) && number> 0'과 같은 것이 더 좋을 것입니다. JS regex 한정 기호에서 어느 정확한 범위가 지원되는지 확실하지 않습니다. – Oriol

    관련 문제