2017-05-26 2 views
0

Ich habe Probleme herauszufinden, wie Sie Elemente aus einem Array nach der Verwendung der Join() -Funktion entfernen. sieheWie verwendet man array.splice() nach .join()?

Wie Sie die erste Array.splice() funktioniert, aber die zweite nicht ...

var recordsArray1 = ['a','b','c','d','e','f']; 
 
\t 
 
console.log(recordsArray1.length); 
 
recordsArray1.splice('a', 1); 
 
console.log(recordsArray1); 
 

 
var recordsArray2 = ['g','h','i','j','k','l'].join('\n'); 
 
\t 
 
console.log(recordsArray2.length); 
 
recordsArray2.splice('g', 1); 
 
console.log(recordsArray2);

Vielen Dank für jede Hilfe.

Tim

+0

Natürlich wäre der beste Weg, die visuelle Darstellung über eine for-Schleife zu generieren und dort alle Formatierungen anzuwenden. –

Antwort

1

Array.prototype.join(separator) wandelt ein Array in einer durch separator getrennt String. Wenn Sie die Elemente mit einem Newline-Element verbinden möchten, führen Sie den Join nach anderen Array-Operationen wie dem Slicing durch.

+0

Wie würde ich zuerst eine (vertikale) Liste von Array-Elementen erstellen und dann Elemente später entfernen? –

+0

Wenn Sie möchten, können Sie ein "\ n" an jedes Element anhängen und sie dann filtern. Das könnte mit etwas wie list.map gemacht werden (item => item + "\ n") –

+1

Die Realität ist jedoch so, dass es keine "vertikale Liste von Array-Elementen" gibt. Array-Elemente sind nur Objekte in einem Array im Speicher. Ich denke, du verwirrst die Darstellung eines Arrays und das Array selbst. –

0

Wenn ich Ihr Bedürfnis richtig verstanden habe, möchten Sie vielleicht die Elemente zuordnen und jedem Element eine neue Zeile hinzufügen, anstatt das Array mit einer Zeichenfolge zu verbinden. Dies sollte tun:

recordsArray2 = ['g','h','i','j','k','l'] 
 
recordsArray2.map((x) => x + "\n")

0

Zuerst Ihre Benutzung splice ist nicht richtig. Deine Intention scheint "bitte, entferne genau eins" bzw. "bitte entferne ein g". Aber so funktioniert Splice nicht. Der erste Parameter ist der Index um zu starten, die korrekte Verwendung wäre .splice(0, 1) (lesen Sie: entfernen Sie ein Element beginnend mit Index 0).

Zweitens, Join konvertiert das Array in eine Zeichenfolge mit der bereitgestellten Sequenz. So liefert ['g','h','i','j','k','l'].join('\n');g\nh\ni\n... als eine Zeichenfolge, die keine join Methode hat. Also, um das g zu entfernen, schlage ich vor, das Array nach zu verbinden, haben Sie das g: var arr =['g','h','i','j','k','l']; arr.splice(0, 1); arr = arr.join('\n'); entfernt (oder treten Sie ihm nicht bei, da ich denke, dass es nicht das war, was Sie vorhatten). Ein anderer Weg würde das G nach dem Verbinden entfernen, z. var arr =['g','h','i','j','k','l'].join('\n').substr(2) (die die Zeichenfolge ab dem dritten Zeichen zurückgeben würde, damit das g und das folgende \ n entfernt werden).