在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/