2010-12-07 67 views
28

是否可以根據索引刪除數組的內容?如果我有2個這樣的數組:如何刪除數組元素?

Array1包含15個值,我想獲得最後10個值。

刪除元素之前:

array1 == [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] 

移除元素之後:包含15個值,然後我想只有前10個值

array1 == [5,6,7,8,9,10,11,12,13,14] 

數組2。

刪除元素之前:

array2 == [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] 

移除元素後:

array2 == [0,1,2,3,4,5,6,7,8,9] 

但也有必須滿足的條件:

如果陣列只包含三個元素是沒有必要丟棄數組中的元素,以及數組是否僅包含10個元素。但是如果數組包含10個以上的元素,則多餘的元素將被丟棄。

回答

49

爲了保持前十分的項目:

if (theArray.length > 10) theArray = theArray.slice(0, 10); 

,或許不夠直觀:

if (theArray.length > 10) theArray.length = 10; 

爲了保持過去十年的項目:

if (theArray.length > 10) theArray = theArray.slice(theArray.length - 10, 10); 

您可以對第一個參數使用負值來指定長度-n,並省略第二個參數得到的所有項目到最後,以相同也可以寫成:

if (theArray.length > 10) theArray = theArray.slice(-10); 

splice方法用於刪除項目,並與其他物品代替,但如果你沒有指定新項目可以使用只刪除項目。爲了保持前十分的項目:

if (theArray.length > 10) theArray.splice(10, theArray.length - 10); 

爲了保持過去十年的項目:

​​
3

參見splice()

splice()方法改變陣列的通過去除現有元件和/或添加新元素的內容。

它不會創建一個新的數組,如果你想創建一個新的數組,使用slice

+0

也許我誤解你,但它確實爲我創造一個新的數組(和突變現有陣列) 。例如`var b = a.splice(0,3)` – AlexG 2017-08-18 16:37:58

3

的硬類跟隨你的問題,但這些嘗試:

array = array.slice(-10); 

// or 

last10 = array.splice(-10); 
// array has first array.length-10 elements 
13

使用功能array.splice(index, count)index刪除count元素。要結束刪除元素,使用array1.splice(array1.length - 10, 1);

+0

嗯,我不知道你是什麼意思與索引和計數,你能解釋它嗎? – user495688 2010-12-07 08:49:21

+0

請參閱http://www.hunlock.com/blogs/Mastering_Javascript_Arrays – 2010-12-08 16:11:25