將arguments轉換成陣列的方法

2022-05-17 12:55:44 字數 496 閱讀 5727

將函式裡的arguments,轉換成乙個真正的陣列的方法,arguments是個類陣列,除了有實參所組成的類似陣列以外,還有自己的屬性,如callee,arguments.callee就是當前正在執行的這個函式的引用,它只在函式執行時才存在。因為在函式開始執行時,才會自動建立第乙個變數arguments物件。

一、arguments這個類陣列

它將實參以陣列的形式儲存著,還可以像陣列一樣訪問實參,如arguments[0];

它也有自己獨特的屬性,如:callee,

它的長度是實參的個數。補充:那arguments.callee.length又是什麼呢?arguments.callee是當前正在執行的函式的引用,類似function.length,那就是形參的個數。

二、將arguments轉換為真正的陣列的方法

用迴圈,因為arguments類似陣列可以使用arguments[0]來訪問實參,那麼將每項賦值給新的陣列每項,直接複製比push要快,若實參有函式或者物件,就要深拷貝。

vector轉換成陣列

std vector,內部儲存的所有元素,都是占用一片連續的記憶體空間。因此,比較好的做法就是直接取第乙個元素的位址,得到了首位址,之後的做法與陣列也是大同小異了。舉例說明。假設函式func需要以陣列的方式傳遞,函式原型如下 void func double pdataaddress,size t ...

obj轉換成陣列

原則上obj是不能轉換成陣列的。首先array也是obj。只是乙個特殊的object。obj乙個很關鍵的點,是擁有成員和方法,撇開方法不說,obj就是乙個key value結構。也就是雜湊陣列,而js的陣列只能是由數字索引組成的。撇開了key,只留下value的話資料丟失太多。如果保留了key,那麼...

ruby 雜湊轉換成陣列

最近在測試中得到的結果是雜湊,而case設定的期待結果是寫在陣列中的。所以需要將雜湊轉換成陣列,這樣直接對比陣列,一條語句就搞定了。而ruby貌似沒有直接轉換的方法 也許有,但是我沒發現 於是自己試著寫了乙個方法 def hash to array hash arr hash.each value ...