2016-10-17 5 views
0

Ich arbeite an der folgenden JS und es wird keine Ausgabe angezeigt, wenn geladen.JavaScript - Struct Arrays

<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> 

Die Ausgabe sollte so etwas wie:

0 Toyota, Camry, Blau

1 Ford, Mustang, Red

2 Chevrolet, Nova, Gelb

Aber nichts steht bevor. Das könnte etwas Einfaches sein, oder ich mache das total falsch. Ich fange an, JavaScript zu lernen, und das macht mich verrückt versuchen, dies herauszufinden ..

Dies ist für eine Online-Codierung Aufgabe, und ich möchte nicht, dass jemand meine Arbeit für mich tun. Ich habe meinen Professor gefragt, aber er ist nur in C#/Java und nicht in JS .... danke. Prof ..

Vielen Dank für jede und alle Unterstützung.

John

Antwort

1

Array#length Werke ohne Klammern.

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

Für den Rest könnten Sie einen Konstruktor mit Werten verwenden.

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

Thank you !! Ich habe die Klammer entfernt und es hat funktioniert. Ich habe noch nicht versucht, einen Konstruktor mit Werten zu verwenden, aber ich werde viel einfacher aussehen. – JohnP

0

Länge ändern() als Funktion cars.length

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

Sie zu map() Methode verwenden können.

Beispiel:

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);