在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還有個小問題,在處理只有length屬性時,這幾種方法會有不同的結果,根據需求,選擇方法fuc(arg1, arg2)
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...