將類陣列轉換成陣列的方法 slice 的使用

2021-08-22 07:25:10 字數 1803 閱讀 3619

這邊文章分兩部分,第一部分是slice()的使用,第二部分是用slice將類陣列轉換成陣列

第一部分:

官方文件說:slice是用來擷取選取陣列的,可傳入乙個或兩個引數,返回值是新陣列,不會影響原陣列。

先new了array乙個陣列 str

var str = new array();

str[0] = 1;

str[1] = 2;

str[2] = 3;

str[3] = 4;

str[4] = 5;

返回值是選取的新陣列,原陣列是不會被修改的。

如果是乙個引數就是從何處開始(下標)選取到陣列的末尾。

var strs = str.slice(2);

console.log(strs); // [3, 4, 5]

console.log(str); // [1, 2, 3, 4, 5]

如果傳入二個引數就是從第乙個引數(下標)開始選取到第二個引數(下標)結束,但是不包括第二個引數

var strs = str.slice(2,4);

console.log(strs); // [3, 4]

如果傳入的是負數,規定從陣列的尾部開始算起,-1指最後乙個元素,-2指倒數第二個元素,以此類推

var strs = str.slice(-2);

console.log(strs); // [4, 5]

如果傳入兩個負數,和上面一樣 不過都是都從陣列的尾部開始。

var strs = str.slice(-4,-1);

console.log(strs); // [2, 3, 4]

如果傳入兩個引數,第二個引數小於第乙個引數,那麼結果為空陣列(負數也同理)。

var strs = str.slice(-1,1);      

console.log(strs); // [ ]

不過在實踐中一般是用來將類陣列轉換成陣列

這是我之前寫的一串html**用來獲取類陣列

結果如下:

var nodelist = document.queryselectorall("div");

console.log(nodelist); //nodelist(10) [div, div, div, div, div, div, div, div, div, div]

nodelist = .slice.call(nodelist);

console.log(nodelist) //(10) [div, div, div, div, div, div, div, div, div, div]

第一行是先獲取一串類陣列

第二行是在控制台輸出類陣列

第三行是轉換類陣列(需要用變數來接受)或者array.prototype.slice.call(nodelist)也是可以的,兩個是同理

第四行是在控制台輸出轉換過的陣列。

不知道你學會了沒?我也不知道學會沒,反正敲了好幾遍hhhh

將arguments轉換成陣列的方法

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

vector轉換成陣列

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

obj轉換成陣列

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