Löschen einer Spalte aus einem mehrdimensionalen Array in Javascript

8

Ich habe ein 2D-Array:

%Vor%

Ich möchte eine ganze Spalte dieses Arrays löschen (d. h. jedes dritte Element in jedem Array löschen).

Es gibt Lösungen hier und hier , aber keiner von ihnen ist in Javascript, also ich habe Probleme, die Situationen zu beschreiben.

Was ist der beste Weg, dieses Problem anzugehen? Ich möchte nicht .splice () verwenden, weil ich in einigen Fällen mehrere Spalten löschen werde, und die .splice () -Methode wird die Länge des Arrays ändern, so dass ich am Ende außerhalb der Grenzen zugreifen kann.

Danke!

    
user3757174 17.07.2014, 19:54
quelle

5 Antworten

16

Versuchen Sie es mit slice . Änderungen an Ihrem ursprünglichen array

werden nicht geändert %Vor%     
Rahil Wazir 17.07.2014, 20:12
quelle
6

Iteriere durch das Array und spleiere jedes Sub-Array:

%Vor%

JSFiddle .

Bearbeiten : Ich sehe, dass Sie nicht wollen, Spleiß tun, um außerhalb der Grenzen Probleme und Array-Länge zu ändern. Also:

1.Sie können überprüfen, ob Sie außerhalb der Grenzen sind und das Segment überspringen.
2.Sie können ein Array von Indizes erstellen, die Sie löschen möchten, und einfach neue Arrays aus den Indizes erstellen, die nicht in diesem Array erscheinen (anstatt zu löschen, erstellen Sie neue Arrays mit der entgegengesetzten Bedingung).

In etwa so:

%Vor%

Neuer JSFiddle .

    
Amir Popovich 17.07.2014 19:58
quelle
2

Verwenden Sie die Funktion map und splice für Ihre Lösung. wie das

%Vor%

Verwenden Sie nicht delete , um Elemente aus einem JavaScript-Array zu löschen. Der Grund dafür ist, dass delete das Element wirft, aber die interne Längenvariable nicht aktualisiert.

Beispiel

%Vor%

benutze splice dies setzt die richtige Länge und löscht das Element des Arrays.

    
ins0 17.07.2014 20:05
quelle
1

splice ist cool. Es ändert die Größe des Arrays, während es Dinge entfernt, so dass Sie nicht mit Nullen enden. Also mit Spleißen müssen Sie nur durch jede Zeile iterieren und das richtige Element entfernen.

%Vor%

Ссылка

    
Alex Wayne 17.07.2014 20:05
quelle
1

Diese Funktion verwendet keine Spleißstelle und löscht alle gewünschten Spalten:

%Vor%

Hoffe, das ist was du suchst

    
sergeyz 17.07.2014 20:25
quelle