如何把一個類數(shù)組對象轉(zhuǎn)換成數(shù)組

ES5的方法

主要借用[].slice.call()實現(xiàn)

var foo = function() {
    var arr = [].slice.call(arguments)
    var result = Object.prototype.toString.call(arr)
    console.log(arr) //[]
}()

ES6的方法

  1. 使用Array.from, 值需要對象有l(wèi)ength屬性, 就可以轉(zhuǎn)換成數(shù)組
const arrayLike = {
  length: 5
}
let arr2 = Array.from(arrayLike)
//[undefined, undefined, undefined, undefined, undefined]
  1. 使用展開運算符
    但是展開運算符只能將某些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成數(shù)組, 因為本質(zhì)是調(diào)用遍歷器接口(Symbol.iterator
    ),如果一個對象沒有部署這個接口,就無法轉(zhuǎn)換 --- 阮一峰ES6
// arguments對象
function foo() {
  var args = [...arguments];
}
// NodeList對象
[...document.querySelectorAll('div')]

兼容寫法

const toArray = (() => Array.from ? Array.from : obj => [].slice.call(obj))();

Demo

阮一峰ES6教程

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};
// ES5的寫法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
// ES6的寫法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進,只要將碼點放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,674評論 0 8
  • 《ECMAScript6 入門》阮一峰 讀書筆記 let和constlet聲明的變量僅在塊級作用域內(nèi)有效,var聲...
    親愛的孟良閱讀 827評論 1 2
  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,717評論 0 1
  • “假如巴菲特和人工智能有一場對決,誰更可能勝出?”“當(dāng)計算機測算出明天某只股票會上漲,你信嗎?”“如果計算機顯示現(xiàn)...
    羽時金融閱讀 416評論 0 0
  • 通過面試,體檢,背調(diào),工作交接,終于入職,開始了與新工作的的蜜月篇。錯,實際上入了職,你找不到自己的配偶,都是親戚...
    Elsaguo閱讀 369評論 0 3

友情鏈接更多精彩內(nèi)容