2016-10-17 4 views
0

아래 JS에서 작업 중이며로드 될 때 출력이 표시되지 않습니다.JavaScript - 구조체 배열

<html> 
    <head> 
    </head> 

    <body> 

     <script type="text/javascript"> 

      var MAX = 3; 

      function structCars() { 
       this.make; 
       this.model; 
       this.color; 
      } 

      var cars = new Array(); 

      var makes = new Array (
       "Toyota", 
       "Ford", 
       "Chevrolet" 
       ); 

      var models = new Array (
       "Camrey", 
       "Mustang", 
       "Nova" 
       ); 

      var colors = new Array (
       "Blue", 
       "Red", 
       "Yellow" 
       ); 

      for(var i = 0; i < MAX; i++) { 
       var temp = new structCars(); 
       temp.make = makes[i]; 
       temp.model = models[i]; 
       temp.color = colors[i]; 
       cars.push(temp); 
       } 

      for(i = 0; i < cars.length(); i++) { 
       document.write(i + " " + cars[i].make + ", " + cars[i].model + ", " + cars[i].color + ".<br>"); 
       } 

     </script> 

    </body> 
</html> 

출력해야 뭔가 같은 :

0 도요타 캠리, 블루

1 포드, 머스탱, 레드

2 노란색 시보레, 노바,

그러나 아무것도 오고있다. 이것은 단순한 것이거나 완전히 잘못된 것입니다. 나는 JavaScript를 배우기 시작하고 있는데,이 사실을 알기 위해 미친 듯이 몰아 넣고있다.

이것은 온라인 코딩 할당을위한 것으로, 나는 나를 위해 내 일을하고 싶지 않다. 교수님 께 물어 보았지만 C#/Java에 익숙하지 않고 JS가 아닙니다 ... 감사합니다 ..

감사합니다.

존 괄호없이

답변

1

Array#length 작품.

for(i = 0; i < cars.length; i++) { 
//      ^^^ 

나머지는 값이있는 생성자를 사용할 수 있습니다. 함수로

function StructCars(make, model, color) { 
 
    this.make = make; 
 
    this.model = model; 
 
    this.color = color; 
 
} 
 

 
var MAX = 3, 
 
    makes = ["Toyota", "Ford", "Chevrolet"], 
 
    models = ["Camrey", "Mustang", "Nova"], 
 
    colors = ["Blue", "Red", "Yellow"], 
 
    cars = [], 
 
    i; 
 

 
for (var i = 0; i < MAX; i++) { 
 
    cars.push(new StructCars(makes[i], models[i], colors[i])); 
 
} 
 

 
cars.forEach(function (car, i) { 
 
    console.log(i + " " + car.make + ", " + car.model + ", " + car.color); 
 
});

+0

감사합니다! 나는 괄호를 제거하고 그것은 효과가 있었다. 나는 아직 값으로 생성자를 사용하지는 않았지만 훨씬 단순 해 보일 것이다. – JohnP

0

변경 길이는()

for(i = 0; i < cars.length; i++) { 
       document.write(i + " " + cars[i].make + ", " + cars[i].model + ", " + cars[i].color + ".<br>"); 
       } 
0

당신은 너무 map() 방법을 사용할 수 있습니다 cars.length합니다.

예 :

var makes = new Array (
 
    "Toyota", 
 
    "Ford", 
 
    "Chevrolet" 
 
); 
 

 
var models = new Array (
 
    "Camrey", 
 
    "Mustang", 
 
    "Nova" 
 
); 
 

 
var colors = new Array (
 
    "Blue", 
 
    "Red", 
 
    "Yellow" 
 
); 
 

 
var cars = makes.map(function(value,key){ 
 
    var car = {}; 
 
    car.make=value; 
 
    car.model=models[key]; 
 
    car.color=colors[key]; 
 
    return car; 
 
}); 
 

 
console.log(cars);