我使用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>
&#13;
我很乐意找到一个规范来源,它可以将迭代器对象的调用语法实现回旧浏览器,而不依赖于转换for...of
。
答案 0 :(得分:2)
为什么不好老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
的Proto方法:答案 1 :(得分:1)
如果您对while(true)
感到紧张,可以试试这个:
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();
var iterator = entries.next();
while(!iterator.done) {
if (iterator.value) {
console.log(iterator.value[0] + ": " +
iterator.value[1])
}
iterator=entries.next();
}
<script src="https://cdn.rawgit.com/WebReflection/url-search-params/v0.10.0/build/url-search-params.js"></script>
答案 2 :(得分:0)
这是我对迭代器实现的尝试,但while(true)
让我感到紧张。欢迎任何其他来源/实施。
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = urlParams.entries();
while(true) {
var iterator = entries.next()
if (iterator.value) {
console.log(iterator.value[0] + ": " +
iterator.value[1])
}
if (iterator.done) {
break;
}
}
&#13;
<script src="https://cdn.rawgit.com/WebReflection/url-search-params/v0.10.0/build/url-search-params.js"></script>
&#13;
答案 3 :(得分:0)
我不完全确定您的约束条件是什么,但您也可以使用readr::read_table(filename, col_names=FALSE, skip=5)
变量上的spread operator,如果可以使用的话。
entries