Ich versuche eine Funktion in JavaScript zu erstellen, die die Indizes eines Arrays neu anordnet. Ich kam auf die folgende Idee, aber mit dieser Methode muss ich eine neue else if-Klausel für jede mögliche Länge des Arrays als viertes Argument für die Methode reformatArray
gegeben. Können Parameter in einer Methode intuitiver hinzugefügt werden?Eine intuitivere Möglichkeit zum Umordnen des Arrays
Code:
function start() {
var array1 = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8"];
reformatArray(array1, 1, 2, [1, 2, 0]);
//output should be ["Item 1", "Item 3", "Item 4", "Item 2", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8"]
//WORKS
var array2 = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8"];
reformatArray(array2, 2, 5, [3, 1, 3, 2]);
//output should be ["Item 1", "Item 2", "Item 6", "Item 4", "Item 6", "Item 5", "Item 8"]
//DOES NOT WORK because array as fourth argument is greater than 3 in length
}
function reformatArray(array, startIndex, numOfIndicesToReplace, newIndicesPositions) {
var newPosLength = newIndicesPositions.length;
if (newPosLength == 0) {
array.splice(startIndex, numOfIndicesToReplace);
} else if (newPosLength == 1) {
array.splice(startIndex, numOfIndicesToReplace, array[startIndex + newIndicesPositions[0]]);
} else if (newPosLength == 2) {
array.splice(startIndex, numOfIndicesToReplace, array[startIndex + newIndicesPositions[0]], array[startIndex + newIndicesPositions[1]]);
} else if (newPosLength == 3) {
array.splice(startIndex, numOfIndicesToReplace, array[startIndex + newIndicesPositions[0]], array[startIndex + newIndicesPositions[1]], array[startIndex + newIndicesPositions[2]]);
}
//etc.
}
Vielen Dank im Voraus.
Was genau wollen verketten erreichen? –
Alle Werte im Array 'newIndicesPositions' werden als einzelne Parameter in der 'splice'-Methode hinzugefügt. –
In der Funktion 'reformatArray' habe ich einen Kommentar' // etc' hinzugefügt, was ich damit meine, dass mehr wenn else-Klauseln hinzugefügt werden sollten, die die Länge von newIndicesPositions überprüfen und Parameter entsprechend der Spleißmethode hinzufügen. –