首页 > 解决方案 > 允许使用 Array.from 将数据结构转换为数组

问题描述

假设我有这样的课程:

class Foo {

 constructor(){
  this.internalList = new Set([1,2,3])
 }

}

有没有我可以像这样实现的方法:

class Foo {

 constructor(){
  this.internalList = new Set([1,2,3])
 }

 toArray(){   // add this method

     const ret = [];
     for(const v of this.internalList){
         ret.push(v);
     }
     return ret;
  }

}

这样我就可以称之为:

  const v = Array.from(new Foo());

那么是否有一些我可以实现的接口或方法,以便 Array.from 可以在我的类上工作?

标签: javascriptnode.jsclass

解决方案


您正在寻找的界面是迭代,它Array.from使用。你可以简单地做

class Foo {
  constructor(){
    this.internalList = new Set([1,2,3])
  }
  [Symbol.iterator]() {
    return this.internalList.values();
  }
}

values方法Set创建了一个我们可以在这里使用的迭代器,但是你也可以实现一个自定义的迭代器。


推荐阅读