2016-10-12 4 views
0

수행 할 작업은 다음과 같습니다. 나는 역순으로 쓰고 5 개의 다른 문자열을 형성하기 위해 단어를 무작위로 추출해야하는 문자열을 얻는다. 나는 문자열을 역순으로 쓰고 단어를 무작위로 추출하려고했지만 5 회는 할 수 없다. 여기에 코드가 있습니다.여러 번 복제하지 않고 무작위 화하기

var x = "Lorem ipsum dolor sit amet"; 
var wordsArray = x.split(" "); 


function wordsReverse(allWords){ 
    var otherArray = []; 
    for (var i = allWords.length-1; i >= 0; i--) { 
     otherArray.push(allWords[i]); 
    } 
    return otherArray; 
} 

function createRandomText(text){ 
    var randomArray = []; 
    var randomText = null; 
    for (var j = 0; j < 5; j++) { 
     for (var k = 0; k < text.length; k++) { 
      randomText = text[Math.floor(Math.random()*text.length)]; 
      if (text[randomText] === undefined) { 
       randomArray.push(randomText); 
       text[randomText] = true; 
      } 

     } 
    } 

    return randomArray; 
} 

console.log(wordsReverse(wordsArray).toString().replace(/\,/g, ' ')) 
console.log(createRandomText(wordsArray).toString().replace(/\,/g, ' ')) 

감사합니다.

+0

왜 '.join (' ')'대신에 .toString(). replace (/ \,/g,' '))'를 쓰고 있습니까? 배열 할 때마다, 그래서 아무것도 남아 있지 않습니다. 따라서 배열을 먼저 복제하고이를 처리하는 것이 좋습니다. 또는 사용한 것을 저장하기 위해 객체 리터럴을 생성하십시오. – Keith

답변

0

모두 5 개의 임의의 문자열을 얻을 때까지 반복하십시오. 문자열이 배열 루프에없는 경우.

var randomArray = []; 

While(randomArray.length != 5){ 
    wordsReverse(wordsArray).toString().replace(/\,/g, ' '); 
    var str = createRandomText(wordsArray).toString().replace(/\,/g, ' '); 
    if(randomArray.indexOf(str) < -1) { 
    randomArray.push(str); 
    } 
} 
관련 문제