搜尋

首頁  >  問答  >  主體

javascript - es6將類別數組轉換成數組的問題

栗子:
var a = {'1':'gg','2':'love','4':'meimei',length:5};
var arr=[.. .a];
console.log(arr);

Google瀏覽器下報錯誤:Uncaught TypeError: a[Symbol.iterator] is not a function

類別數組的定義:/a/11...

javascript關於‘...’的介紹說明文件:https://developer.mozilla.org...

javascript官方文件說'...'可以將類別數組轉換成數組,為什麼還會報錯呢?迷惑!

扔个三星炸死你扔个三星炸死你2746 天前738

全部回覆(3)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-06-30 09:57:43

    你發的文章,自己也要先看清楚呀。

    之所以成為“類數組”,就是因為和“數組”類似。不能直接使用陣列方法,但你可以像使用陣列一樣,使用類別數組。

    不可以直接使用陣列方法,你這個擴充語句不就是 直接使用了麼?

    你需要先把類別數組轉換成數組,可以使用文章中介紹的 Array.prototype.slice.call(arguments)

    ES6 也有個方法,Array.from(arrayLike)

    回覆
    0
  • 習慣沉默

    習慣沉默2017-06-30 09:57:43

    請用 Array.from()

    如果你看​​英文的頁面就會發現展開對象需要是可遍歷的

    Only for iterables

    Spread syntax can be applied only to iterable objects:

    var obj = {'key1': 'value1'};
    var array = [...obj]; // TypeError: obj is not iterable

    回覆
    0
  • 滿天的星座

    滿天的星座2017-06-30 09:57:43

    es6新增那麼多特性,你指望瀏覽器能全實現?

    回覆
    0
  • 取消回覆