本文主要記錄了在nodejs開發過程中遇到過的由陣列特性引起的問題及解決方式,以及對陣列的靈活應用。
本文**測試結果均基於node v6.9.5
利用陣列物件方法push/shift可實現佇列先進先出特性,例如:
>a=
>a.push(2.3.4)
3>a.push(2)
3>a
[2.3.4.2]
>a.shift()
2>a
>[3.4.2]
對陣列的刪除操作有兩種常見方式:delete和使用splice方法,需要明確他們的區別。
操作/方法
說明splice
刪除並返回指定的陣列元素,陣列本身長度會改變;但不會free元素物件
delete
刪除(free)元素物件,陣列元素不變,值變為undefined
如果要從陣列中徹底刪除某個元素,使用splice即可:
> a=[1,2,3]
[ 1, 2, 3 ]
> a.splice(1,1)
[ 2 ]
> a
[ 1, 3 ]
> a.length
2> a.foreach(function(item, index));
index[ 0 ]: 1
index[ 1 ]: 3
undefined
>
那麼,當使用delete刪除某個元素物件後,此時執行foreach的效果是什麼?
測試結果如下
> a=[1,2,3]
[ 1, 2, 3 ]
> delete a[1]
true
> a
[ 1, , 3 ]
> a.length
3> a.foreach(function(item, index));
index[ 0 ]:
1index[ 2 ]:
3undefined
從測試結果來看,foreach並不會遍歷到值為undefined的哪一項。這在實際應用中如何判斷foreach是否結束是一大挑戰。
解決配合foreach的非同步特性應用,可為陣列新增prototype來自行管理設定有效資料;
效果如下:
> a=[1,2,3]
[ 1, 2, 3 ]
> a.validnum=3
3> delete a[2]
true
> a.validnum=2
2> a
[ 1, 2, , validnum:
2 ]> a.length
3> a.validnum
2> a.foreach(function(item, index));
index[ 0 ]:
1index[ 1 ]:
2undefined
>
陣列模擬佇列 以及佇列的復用(環形佇列)
private int front 指向佇列頭的第乙個元素 privat int maxszie 設定佇列的最大長度 private int rear 指向佇列尾的最後乙個元素的後乙個位置,留出乙個位置作為約定 因為需要留出乙個位置作為約定,那麼當陣列的maxsize 4 的時候有效資料的個數就等於...
2 陣列模擬佇列,以及環形佇列
front和rear的初始值都是 1 從隊尾插入乙個資料rear 1 從隊頭取出乙個資料front 1 隊滿 rear maxszie 1 隊空 front rear 使用陣列模擬佇列,編寫乙個arrayqueue類 class arrayqueue 判斷佇列是否滿 public boolean i...
2020 12 13關於陣列佇列以及堆疊
class testarraysclass 隱式宣告陣列 int array3 宣告二維陣列 int multidimensionalarray1 new int 2,3 隱式宣告二位陣列秉賦初值 int multidimensionalarray2 宣告交叉陣列 int jaggedarray n...