2010-02-04 15 views
8

將新對象插入索引位置0處的對象數組中的最簡單方法是什麼?沒有jQuery; MooTools沒關係;沒有unshift(),因爲它是根據w3schools在IE中的undefinedJavaScript數組

+0

您可能仍然會收到回覆,內容是「你試過jQuery嗎?」。 :) – Alconja 2010-02-04 05:13:49

+1

@JamesBrownIsDead,你有沒有試過jQuery?你真的應該。 :P:P – 2010-02-04 05:18:06

+3

@CMS是正確的:'unshift'對IE有效:http://jsbin.com/umolo – Kobi 2010-02-04 05:19:04

回答

29

W3CSchools是真的過時,所述unshift方法是ECMAScript 3rd Edition標準這是有批准和發佈爲1999年12月

的一部分現在是無理由,它從IE 5.5起支持起來。

使用它是安全的,甚至像jQueryMooTools這樣的現代庫在內部使用它(您可以查看源代碼:)。

var array = [2,3]; 
array.unshift(1); // returns 3 
// modifies array to [1, 2, 3] 

此方法返回新的數組長度,並將作爲參數傳遞的元素插入到數組的第一個位置。

+0

-1因爲OP特別要求「不'unshift()'」 – 2010-02-04 05:15:16

+6

夥計,有沒有理由避免'unshift' ... – CMS 2010-02-04 05:17:10

+10

提問者沒有指定'unshift',因爲w3schools表示它在IE中不受支持。正如@CMS指出的那樣,這已經過時了:w3schools甚至不會跟蹤* IE <6的市場份額。 – 2010-02-04 05:19:50

6

使用splice方法。

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

爲了插入, '的howmany'= 0

+1

對於@JamesBrownIsDead所要做的事情,'unshift'和'concat'比'splice'簡單。 – 2010-02-04 05:22:33

+0

@多米尼克,的確如此。我想我只是'懶'記得不同的方法,只是更通用的:P – 2010-02-04 05:41:35

+0

@okw拼接不錯:) – 2010-02-04 23:59:17

5

你可以試試這個:

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

另一種選擇是使用push和反向指標 - 你可以隨便寫一個對象,做到這一點。

0

我會用unshift()如果你的目的是修改數組,否則,你可以使用concat()作爲了Kobi建議(它返回一個新的數組並且不修改所涉及的陣列):

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

參見:concat