Nodejs 陣列的佇列以及forEach應用

2021-08-10 10:16:42 字數 1498 閱讀 2376

本文主要記錄了在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...