Angular 2:使用Set?浏览器兼容性&迭代不可能

时间:2018-01-25 11:52:12

标签: javascript angular firebase firebase-realtime-database

我有一个Angular 2 Web应用程序。 我想将用户添加到游戏中,我有一个带复选框的屏幕。当一个被击中时,我将它添加到Set。

mySet = new Set();

this.mySet.add(e);

用户点击“添加用户”按钮后,应将用户发送到Firebase数据库。 我在这里建议使用Set by a User,但后来我发现https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Set,很多设备都没有真正支持Set,所以我很害怕使用它。你对此有何看法? 在将数据发送到firebase数据库之前,还有其他方法/更好的方法来保存数据吗?

编辑: 所以它似乎是一种合法的方法(见答案) 现在我有另一个问题:我不能迭代一个Set。 如你所见,我有一个Set,增加了值。 然后打电话给

    for (let entry of this.mySet) {
      console.log(entry);
  }

this.mySet是低调的,它告诉我“类型集不是数组”。 如上所述,我使用角度。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

关于浏览器兼容性,您可以使用此polyfill来确保Set始终可用

https://www.npmjs.com/package/es6-set

关于迭代设置条目的问题,您可以使用MDN docs中所述的forEach

以下是一个例子。

this.mySet.forEach((entry: string) => {
   console.log(entry);
});

答案 1 :(得分:1)

根据kangax.github.io/compat-table/es6/#test-Set这是网站caniuse.com检查的地方。 几乎90%的浏览器都支持它,不包括旧的浏览器

设置用法和方法http://exploringjs.com/es6/ch_maps-sets.html#sec_set