在 JavaScript 中,如何检测迭代器返回键值条目?

2024-02-19

考虑以下函数,当传递一个可迭代的东西时,该函数尝试实现通用行为:

let f = function(thing) {
    if (typeof thing[Symbol.iterator] === 'function') {
        for (let [key, value] of thing) {
            console.warn(key, value);
        }
    }
}

如果可迭代事物在迭代时不返回键值对,则键变量将被设置为迭代的实际值,并且值将是未定义的。我希望始终检索该值,无论迭代器返回的数据类型是什么。

如何检测这个可迭代的东西在迭代时没有返回键值对?

我不能依赖于检查值是否未定义,因为对于键值可迭代来说,拥有一个键和一个未定义的值是完全有效的。

Edit:

一个 RunKit 示例,演示使用该通用函数迭代 Map 和 Set 会导致 Set 出现意外结果:

https://runkit.com/ericmorand/generic-iterable-handler https://runkit.com/ericmorand/generic-iterable-handler


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 JavaScript 中,如何检测迭代器返回键值条目? 的相关文章

随机推荐