javascript - 在不使用 for...of 的情况下正确使用迭代器

标签 javascript loops iterator

我正在使用 URLSearchParams它将返回一个迭代器对象,但在 IE 中不受支持。我添加了一个 polyfill , 但现在 IE 对返回的 iterator object 没有任何原生支持因为它没有实现 for...of语法。

在没有 for..of 的情况下调用迭代器对象的首选语法是什么?

这是 ES6 的 for...of 语法:

var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();

for(pair of entries) { 
  console.log(pair[0], pair[1]); 
}

var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();

for(pair of entries) { 
  console.log(pair[0] + ": " + pair[1]); 
}
<script src="https://cdn.rawgit.com/WebReflection/url-search-params/v0.10.0/build/url-search-params.js"></script>

我很想找到一个规范的源代码,它可以将迭代器对象的调用语法实现回旧浏览器,而不依赖于转译 for...of

最佳答案

为什么不用旧的 forEach

console.log(urlParams); 显示返回的对象具有 forEach 方法,但令人惊讶的是,MDN 中的方法中并未提及它。

urlParams.forEach(function(value, key){ 
    console.log(key + ' : ' + value)
});

var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);

urlParams.forEach(function(value, key){ 
  console.log(key + ' : ' + value)
});

各浏览器中UrlSearchParams的原型(prototype)方法:

enter image description here

关于javascript - 在不使用 for...of 的情况下正确使用迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49603554/

相关文章:

c++ - 在复合模式中搜索特定元素

javascript - Ractive.js 将对象设置为 radio 输入值

javascript - 如何根据动态下拉菜单选择显示YouTube视频?

python - 使用 'for' 循环中的变量删除 Python 中的额外空格

c - 循环内的 strcat() 与 sprintf()

c++ - 获取 const map<char, int> 的迭代器

c++11 - move 容器的迭代器?

javascript - jQuery 悬停滚动,只需要一点帮助

javascript - Node.js HTTP/NET -- 连接和请求的区别

python - 在 Python 中迭代字符串列表以进行操作