2013-12-14 5 views
0

나는 이것이 단순한 탐색이라고 알고 있지만 JavaScript를 배우고 있습니다. FOR 루프의 첫 번째 항목을 잡고 두 번째 항목도 가져 오려고합니다. 이것을 할 수있는 방법이 있습니까? 셔플 배열에서 3 개의 임의 항목 만 있으면됩니다.FOR 루프에서 특정 항목 선택

/** 
* Created by the JavaScript Development Team 
* Class: PWA 
* Goal: Goal7 
*/ 

(function() { 
    var names = ["walker", 'marisa', 'annie', 'gizmo', 'marvin']; 
    function shuffle(o) { //v1.0 
     for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
     return o; 
    }; 
    myArray = shuffle(names); 
    console.log(myArray); 
    var Person = function (name) { 
     this.name = name; 
     console.log(this.name); 
     //  for(i=0; i< names.length; i++){ 
     //   var person =[new Person(names[i])]; 
     //  } 
    }; 
    console.log('hello'); 
    var i = 0; 
    var length = myArray.length = 3 
    while (i < length) { 
     //console.log(myArray[i]); 
     var person = new Person(myArray[i]); 
     //  var person = [new Person(names[i])]; 
     i++; 
    } 
})(); 

답변

0

이런 뜻이야?

for (var i=0; i++; i < names.length; i++) { 
     if (i==1) { 
      //grab 
     } 
     else if (i==2) { 
      //grab 
     } 
     else { 
      //Do more 
     } 
} 

또는 더 나은

: names[0]은 배열의 첫 번째 하나이며 names[1]는 두 번째입니다. 그게 전부라면 정말로 루프 할 필요가 없습니다. 당신은 당신이 원하는 얼마나 많은 항목을 알고 항목이 이미 무작위 배정 된 경우

0

당신이

for(var i = 2; i >=0; i--) { 
    new Person(myArray[i]); 
} 

하지만 솔직히 같은 것을 의미합니까, 왜 반복해야합니까? while 루프에서

0

사용 중단 :이 조금 복잡하게 걸쳐있는 것처럼

(function() { 
     var names = ["walker", 'marisa', 'annie', 'gizmo', 'marvin']; 
     function shuffle(o) { //v1.0 
      for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
      return o; 
     }; 
     myArray = shuffle(names); 
     console.log(myArray); 
     var Person = function (name) { 
      this.name = name; 
      console.log(this.name); 
      //  for(i=0; i< names.length; i++){ 
      //   var person =[new Person(names[i])]; 
      //  } 
     }; 
     console.log('hello'); 
     var i = 0; 
     var length = myArray.length = 3 
     while (i < length) { 
      //console.log(myArray[i]); 
      var person = new Person(myArray[i]); 
      //  var person = [new Person(names[i])]; 
       if(i == 2){ break; } // <== 
      i++; 
     } 
    })(); 
0

는 느낌. 왜 3 개의 임의의 것들만 원한다면 왜 모든 이름들을 섞어 놓고 싶습니까? 나는 당신을 위해 약간의 코드를 썼다. 그것은 내가 생각하기에 조금 더 명확하다.

(function() { 

    var people = ['walker', 'marisa', 'annie', 'gizmo', 'marvin']; 

    var random_people_to_get = 3; 
    var random_people = []; 

    var Person = function (name) { this.name = name; }; 


    for(var i = 0; i < random_people_to_get; i++){ 

     // Grabbing a random name from people and removing it! 
     var random_name = people.splice(Math.floor(Math.random() * people.length), 1)[0]; 

     // Make the random_name into a person and put it into the random_people array! 
     random_people.push(new Person(random_name)); 

    } 

    console.log(random_people); 

})(); 

당신이 slice를 사용하여 첫 번째 세 가지 항목으로 배열을 만들 수있는 방법에 충실하려는 경우

. 마찬가지로 :

var firstThreeRandomNames = myArray.slice(0, 3);