2016-05-16 16 views
0

Ich versuche, Methoden einer Array Objekt zusammen zu ketten, aber es wird mich nicht lassen.Einfache JavaScript-Methode Verkettung

var arr = [1,2,3]; 
arr.splice(-3, 1, 'foot').splice(arr.length,0, 'hand'); 
console.log(arr) // ['foot', 2, 3] 

//trying to get ['foot', 2, 3, 'hand'] 

Dies funktioniert nicht. Ich muss die zweite splice auf eine neue Anweisung aufteilen. Warum funktioniert das nicht? Ich habe das Verketten oft im JavaScript-Code gesehen.

+0

geben Sie einen einzelnen Cote zu "Hand" –

Antwort

2

Einfach weil Array.prototype.splice ein Array zurückgibt, das die gelöschten Elemente enthält, wie Sie auf seiner documentation page finden können.

Also im Grunde einige Methoden erlauben Verkettung und einige nicht. Wenn Sie sie zum ersten Mal verwenden, können Sie auf das Dokument verweisen.

Um genauer zu sein, erstellen die meisten Methoden eines Array ein neues Array (mit Ausnahme von Spleiß), also ist es technisch keine Verkettung, da Sie nicht verschiedene Methoden auf dieselbe Instanz desselben Arrays anwenden. Typische Klonierungs-Verkettungsverfahren sind filter, map, find.

+0

Gibt es eine Eigenschaft, die ich finden kann, um festzustellen, ob eine Array-Methode kettenfähig ist? Oder sollte ich annehmen, dass eine Methode, die ein neues Array zurückgibt, kettenfähig ist? – inthenameofmusik

+0

Auch hier können Sie Array-Methoden für jedes Array verwenden. Wenn also eine Methode ein Array zurückgibt, können Sie sie "verketten". Da es jedoch ein neues Array ist, wird es nicht immer das tun, was Sie erwarten. Deshalb ist es wichtig, das Dokument zu lesen (oder einige Tests durchzuführen). Zum Beispiel haben Sie zwei "Spleiß" -Rufe verkettet, aber nicht mit dem Ergebnis, das Sie erwartet haben. – floribon