2015-04-04 16 views
1

在Javascript中,如果我有一個非常大的陣列,myArray刪除和重新利用數組索引

而且我通過調用myArray.push()

添加到它,我刪除使用東西的索引像delete myArray[102]

有沒有一些好處或理由來創建一個單獨的數組,如,它保留myArray中的哪些索引未被使用,因此如果有未使用的索引,我通過定義特定索引(如myArray[102] = newValue;而不是調用)來添加到數組中並累積未使用的索引?或者是由於Javascript的內存處理的某些方面,這是不切實際和毫無意義的?

我刪除而不是拼接的原因是因爲我不想重新排列數組的索引;我正在使用它們來識別特定索引處的特定對象。我主要詢問是否有任何理由優化我使用delete時所產生的差距。

+1

如果你使用'.splice()'而不是'delete'做數組,你將不會在第一時間留下空隙。 – JJJ 2015-04-04 06:59:55

+0

http://stackoverflow.com/questions/500606/javascript-array-delete-elements – undefined 2015-04-04 07:03:07

+0

@Juhana看到我對mohamedrias的回答低於 – 2015-04-05 08:48:05

回答

1

使用delete array[index]刪除陣列中的屬性將留下一個漏洞。

相反,您可以使用splice屬性,該屬性將刪除該索引中的值並調整數組大小。

正如你所提到的,

var a = [1,2,3,4]; 
delete a[2]; 

如果現在打印a,它將包含[1, 2, undefined × 1, 4]delete刪除元素,但不重新索引數組/長度。

但是如果你使用拼接代替,

​​

這將返回[1, 2, 4]。所以你不會找到任何漏洞。

+0

的評論我刪除而不是拼接的原因是因爲我不想重新排序數組的索引;我正在使用它們來識別特定索引處的特定對象。我主要問,是否有任何理由來優化我對差距的使用。 – 2015-04-05 08:47:37