2016-07-10 11 views
-1

Ich habe drei Arrays, die wie folgt aussieht:Textausgabe von mehreren Arrays in JavaScript erstellen

arr1 = ["Chrysler", "blue", "red"] 
arr2 = ["Hyundai", "green", "black"] 
arr3 = ["Ford", "black", "red"] 

und ich möchte um sie auszugeben (zu einer Webseite) wie folgt aus:

black Ford Hyundai 
blue Chrysler 
green Hyundai 
red Chrysler Ford 

Irgendwelche Vorschläge ?

Dank

+0

Ich bin mir nicht sicher, ob ich das Muster zwischen den Feldern und dem Ausgang zu sehen. Sie können natürlich den Text von jedem Array-Element erhalten. Wie zum Beispiel: 'arr [2] + "" + arr3 [0] + "" + arr2 [0] => "schwarzer Ford Hyundai" '. –

Antwort

0
var arr1 = ["Chrysler", "blue", "red"]; 
var arr2 = ["Hyundai", "green", "black"]; 
var arr3 = ["Ford", "black", "red"]; 
var arrays = [ arr1, arr2, arr3 ]; 

function Car(name) { 
    this.name = name; 
    this.colors = new Set(); 
} 

var cars = {}; 
var colors = new Set(); 

for (var idx = 0; idx < arrays.length; idx++) { 
    var carData = arrays[idx]; 
    if (!cars[carData[0]]) { 
     var model = new Car(carData[0]); 
     for (var idx2 = 1; idx2 < carData.length; idx2++) { 
      var color = carData[idx2]; 
      model.colors.add(color); 
      colors.add(color); 
     } 
     cars[model.name] = model; 
    } 
} 

for (let color of colors) { 
    var output = color; 
    for(var name in cars) { 
     if (cars.hasOwnProperty(name)) { 
      var car = cars[name]; 
      if (car.colors.has(color)) { 
       output += " "+car.name; 
      } 
     } 
    } 
    console.log(output); 
} 
0

Sie könnten ein Objekt für die Farben verwenden und die Marken zuweisen. später für die Ausgabe bestellen Farben und Marken und geben Sie die Werte zurück.

var arr1 = ["Chrysler", "blue", "red"], 
 
    arr2 = ["Hyundai", "green", "black"], 
 
    arr3 = ["Ford", "black", "red"], 
 
    colors = {}; 
 

 
[arr1, arr2, arr3].forEach(function (a) { 
 
    var m = a.shift(); 
 
    a.forEach(function (b) { 
 
     colors[b] = colors[b] || []; 
 
     colors[b].push(m) 
 
    }); 
 
}); 
 

 
Object.keys(colors).sort().forEach(function (c) { 
 
    console.log(c + ' ' + colors[c].sort().join(' ')); 
 
});