類陣列轉為陣列

2021-08-15 15:18:49 字數 1097 閱讀 7989

在es6提出之後,這個已經變得非常簡單了,直接呼叫array.from就可以了,如果具備iterator介面的話,我們還可以用(擴充套件運算子)

1.array.from

es6提出的,非常好用,簡單來說,只要具備length屬性的,就可以轉為陣列。

2. …(擴充套件運算子)

必須具備iterator介面才可以,像函式的引數,獲取的dom元素等。

不支援es6的話,可以用下面的

3.array.prototype.slice.call(obj)4.concat

這算是乙個非常規的做法吧,沒在實戰中看誰用過,可以實現需求,但會改動原生的方法,並不好

let obj = ;

obj[symbol.isconcatspreadable] = true;

//呼叫concat時,內部會呼叫它,控制合併後是否展開,陣列預設展開,類陣列預設不展開

.concat(obj) -->[ 'a', 'b' ]

5.把陣列的symbol.iterator賦給類陣列

obj[symbol.iterator] = array.prototype[symbol.iterator];

[...obj]

看過vue文件的,應該對這個比較眼熟吧,在render函式那部分提到過它,它也需要具有length屬性的才可以

(只是想找相應方法的話,看到這就夠了)

function

fuc(arg1, arg2)

還有個小問題,在處理只有length屬性時,這幾種方法會有不同的結果,根據需求,選擇方法

array.prototype.slice.call();   -->[ , ]

concat方法 -->[ , ]

array.from(); -->[undefined, undefined]

等等~

偽陣列轉為真陣列

偽陣列 像陣列但是不是陣列,沒有陣列的方法 1 slice.call obj 這個等於array.protype.slice.call obj slice會把通過索引位置獲取新的陣列,該方法不會修改原陣列,只是返回乙個新的子陣列.call會把this的指向改為傳進去的obj var newarr s...

列表轉為陣列

是陣列,已經想到解決辦法,貼出 給大家參考 set arr 0 a set arr 1 b set arr 2 c set name b 就刪除值為b的元素 set templist array get arr set pos lsearch exact templist name set temp...

陣列轉為物件

1.js裡將兩個陣列轉為物件,第乙個陣列為key,第二個為value。如 1,2,5 和 18,8,6 轉換成物件。2.js裡將多個陣列轉為物件,每個陣列只有兩個值,轉成的物件以每個陣列裡的首位為key,第二位為value。如 a,1 和 b,2 c,3 轉換成物件。只要使用underscore.j...