Ich habe eine Funktion, die alle Elemente aus einem 2-dimensionalen Array durch seine Zeilen und gibt ein 1-dimensionales Array zurück. Das Array hat eine variable Anzahl von Spalten und Zeilen.Iterieren über Reihen von 2-dimensionalen Array mit Arrays unterschiedlicher Länge
Beispiel:
let arr = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
];
Returns:
[1, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12]
Die Funktion kam ich mit:
convertList = (list) => {
let result = [];
let listTotalEntries = R.sum(R.map(R.length)(list));
let mod = R.modulo(R.__, list.length);
let counterRow = -1;
for (let i = 0; i < listTotalEntries; i++) {
if (mod(i) === 0) {
counterRow++;
}
if (list[mod(i)][counterRow]) {
result.push(list[mod(i)][counterRow]);
console.log(list[mod(i)][counterRow]);
}
}
console.log(result);
return result;
};
Frage: Diese Funktion ist nur mit quadratischen Matrizen arbeitet - wie kann Ich mache es mit einer variablen Länge der enthaltenen Arrays arbeiten?
Beispiel:
let arr = [
[1, 2],
[],
[9, 10, 11, 12]
];
Sollte zurück:
[1, 9, 2, 10, 11, 12]
Vielen Dank für Ihre Hilfe!
Muff
Wow! Funktioniert wie ein Charme, schlank und ordentlich! Ich erkannte nicht, dass eine Funktion wie Transponierung in Ramda existiert - Es braucht einige Zeit und Erfahrung, um alle Funktionen und die damit verbundenen Möglichkeiten zu verinnerlichen. Vielen Dank! – Raggamuffin
Ja, das Ramda-Team arbeitet daran, die Möglichkeiten zur Erkennung von Funktionen zu verbessern. Ein Schritt darin war [gerade gestern veröffentlicht] (https://github.com/ramda/ramda/wiki/What-Function-Should-I-Use%3F). –
Großartig! * Lesezeichen * - Ich freue mich auf den Fortschritt des Handbuchs/Leitfadens. Ich habe einen für Version 0.17 gefunden, aber es schien, dass es nur einleitende Kapitel gab. Ich hoffe, dass sie weiterhin als angemessene Ergänzung zu den Dokumenten darauf schreiben. – Raggamuffin