jemand anders
Erfahrenes Mitglied
Hallo,
ich habe zwei Arrays, beide sind aufsteigend sortiert.
In zwei geschachtelten Schleifen soll ermittelt werden, welche Werte im zweiten Array mit dem gleichen Buchstaben beginnen wie die Werte im ersten Array.
Also A... zu A..., B... zu B... etc.
Wenn im zweiten Array ein anderer (höherer) Buchstabe erkannt wird, soll die zweite Schleife beendet werden - also kein kartesisches Produkt - und in der ersten Schleife der nächste Wert verarbeitet werden.
Wie verhindere ich, dass ein kartesisches Produkt (m:n) verarbeitet wird?
Gruß
ich habe zwei Arrays, beide sind aufsteigend sortiert.
In zwei geschachtelten Schleifen soll ermittelt werden, welche Werte im zweiten Array mit dem gleichen Buchstaben beginnen wie die Werte im ersten Array.
Also A... zu A..., B... zu B... etc.
Wenn im zweiten Array ein anderer (höherer) Buchstabe erkannt wird, soll die zweite Schleife beendet werden - also kein kartesisches Produkt - und in der ersten Schleife der nächste Wert verarbeitet werden.
Wie verhindere ich, dass ein kartesisches Produkt (m:n) verarbeitet wird?
Gruß
Code:
console.clear();
var size = [
//'S',
//'M',
'G',
'YL',
'XXL',
'H',
'W',
'B'
];
size.sort();
var color = [
//'Red',
//'Blue',
'Cyan',
'Yellow',
'Green',
'White',
'YXX--White',
'X--White',
'H--White',
'Black'
];
color.sort();
var myArr = [
];
var temp = [
];
var x;
for (var i = 0; i < size.length; i++) {
for (var j = 0; j < color.length; j++) { // Kartesisches Produkt
console.log(size[i] + ' - ' + color[j]);
if (size[i].substr(0, 1) == color[j].substr(0, 1)) {
temp.push(color[j]);
}
}
myArr.push([size[i],
temp]);
temp = [
];
}
for (var i = 0; i < myArr.length; i++) {
for (var j = 0; j < myArr[i].length; j++) {
if (typeof myArr[i][j] == 'string') {
console.log('->' + myArr[i][j]);
x = myArr[i][j];
} else if (typeof myArr[i][j] == 'object' && Array.isArray(myArr[i][j])) {
for (var k = 0; k < myArr[i][j].length; k++) {
console.log('--->' + myArr[i][j][k]);
}
}
}
}
Zuletzt bearbeitet: