2010-02-04 11 views
8

Was ist der einfachste Weg, ein neues Objekt in ein Array von Objekten an der Indexposition 0 einzufügen? Keine jQuery; MooTools in Ordnung; nein unshift() weil es undefined im IE laut w3schools ist.JavaScript-Arrays

+0

Sie erhalten wahrscheinlich immer noch Antworten mit der Antwort "Haben Sie versucht, jquery?". :) – Alconja

+1

@JamesBrownIsDead, Haben Sie versucht jQuery? Du solltest wirklich. : P: P –

+3

@CMS ist korrekt: 'unshift' funktioniert auf IE: http://jsbin.com/umolo – Kobi

Antwort

29

W3CSchools ist wirklich veraltet, die unshift Methode ist Teil der ECMAScript 3rd Edition Norm, die ab Dezember 1999 genehmigt und veröffentlicht wurde

Es ist kein Grund um es heutzutage zu vermeiden, wird es vom IE 5.5 aufwärts unterstützt.

Es ist sicher, es zu verwenden, auch moderne Bibliotheken wie jQuery oder MooTools verwenden es intern (Sie können den Quellcode überprüfen :).

Diese Methode gibt die neue Arraylänge zurück und fügt das als Argument übergebene Element an der ersten Position des Arrays ein.

+0

-1 Weil das OP ausdrücklich angefordert "no' unshift() '" –

+6

Jungs, gibt es kein Grund zu vermeiden "Unshift" ... – CMS

+10

Der Frager spezifiziert keine "Unshift", weil w3schools sagt, dass es im IE nicht unterstützt wird. Wie @CMS herausstellt, ist das nicht mehr zeitgemäß: w3schools * verfolgt * IE * 6 nicht mehr als Marktanteil. –

6

Verwenden splice Methode.

array.splice(index,howmany,element1,.....,elementX); 

Zum Einfügen 'howmany' = 0

+1

'unshift' und' concat' sind einfacher als 'splice' für was @JamesBrownIsDead tun möchte. –

+0

@Dominic, sehr wahr in der Tat. Ich denke, ich bin nur "faul", verschiedene Methoden und nur die allgemeineren zu erinnern: P –

+0

@okw Spleiß ist nett :) –

5

Sie können dies versuchen:

var newItem = 3; 
arr = [newItem].concat(arr); 

Eine weitere Option ist push und umgekehrt die Indizes zu verwenden - Sie können ganz einfach ein Objekt schreiben, das tut.

0

ich unshift() verwenden würden, wenn Ihre Absicht ist es, die Anordnung zu ändern, sonst kann man concat() verwenden als Kobi vorgeschlagen (was ein neues Array zurück und ändert nicht die beteiligten Arrays):

var arr = [1, 2], newItem = 3; 
var newArr = [newItem].concat(arr); // newArr = [1, 2, 3], arr still = [1, 2] 

See: concat