在ES6中筛选或映射节点列表的最有效方法是什么?

根据我的阅读,我将使用以下选项之一:

[...nodelist].filter

或者
Array.from(nodelist).filter

您会推荐哪一个?是否有更好的方法,例如不涉及数组?

最佳答案

如果对象是可迭代的,则

  • [...nodelist]将由对象组成一个数组。
  • 如果对象是可迭代的,或者对象是类似数组的对象(具有Array.from(nodelist)和数字 Prop ),则.length将根据对象创建一个数组

  • 如果NodeList.prototype[Symbol.iterator]存在,那么您的两个示例将是相同的,因为这两种情况都涉及可迭代。如果您的环境尚未配置为NodeList可迭代,则第一个示例将失败,第二个示例将成功。 Babel当前为does not handle this case properly

    因此,如果您的NodeList是可迭代的,则取决于您的使用情况。我可能会视情况选择。 Array.from的一个好处是它需要映射函数的第二个参数,而第一个[...iterable].map(item => item)将必须创建一个临时数组,而Array.from(iterable, item => item)则不需要。但是,如果您不映射列表,则没关系。

    关于javascript - 在ES6中过滤或映射节点列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32765157/

    10-12 01:51