Ich habe den folgenden JS-Code, der die ersten und letzten Elemente in einem Array zurückgeben und dann von den verbleibenden Elementen erhöht werden soll.Erhalten Sie gleich gepolsterte Schlüssel aus der Mitte des Arrays
So zum Beispiel:
var numbers = ['One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten'];
var values = [];
values.push(numbers[0]); // get first
values.push(numbers[numbers.length-1]); // get last
numbers = numbers.slice(1, numbers.length-1); // remove the first and last from numbers
console.log(numbers); // (numbers will go from 2-9 now)
var interval = 2;
for (var i = interval; i < numbers.length; i+=interval) { // get every 2nd item
values.push(numbers[i]);
}
console.log(values);
Welche zurück:
["One", "Ten", "Four", "Six", "Eight"]
So neu geordnet gibt mir:
["One", "Four", "Six", "Eight", "Ten"]
Aber wenn die Datenmenge Änderungen Eleven haben das Ende Ergebnis wird sein:
neugeordneten gibt:
["One", "Four", "Six", "Eight", "Ten", "Eleven"]
So ist das Problem hier ist, dass Ten
und Eleven
sind direkt nebeneinander und nicht als gleich voneinander wie die anderen Elemente.
Die einzige Möglichkeit, um dies zu vermeiden, war die Länge des Arrays zu überprüfen und zu sehen, ob es eine gerade Zahl ist oder nicht und dann das Intervall zu ungerade erhöhen, wenn dies der Fall ist. z.B.
if (interval % 2 != 0)
interval = interval + 1;
Doch was ich finde, ist, dass manchmal kann man noch neben den letzten Punkt mit einem Punkt am Ende, die nicht das gleiche wie die andere in der Liste angeordnet ist, wenn die Mathematik klappt, denn nach dem tun slice, das zweitletzte Element im Array ist jetzt das letzte. Wenn also das Schleifenintervall perfekt mit diesem Index übereinstimmt, endet das mit diesem Element.
Wie kann ich dies vermeiden? Wähle grundsätzlich zuerst die ersten und letzten Gegenstände und packe dann die Gegenstände in der Mitte gleichmäßig auf ein vorgegebenes Intervall, das ich passieren kann.
Das ist ziemlich glatt! Könnte erklären, was Sie in Ihrer Schleife tun, um den gleichen Abstand zu erhalten? Vielen Dank. – Cameron
es ist nur das Array in gleichen Teilen zerkleinern. die Fußzeile verschiebt den Index mit einer Priorität nach unten. Daher können Sie das letzte Element zum Ergebnis hinzufügen, ohne danach sortieren zu müssen. –