Javascript 正确使用迭代器而不使用…of

Javascript 正确使用迭代器而不使用…of,javascript,loops,iterator,Javascript,Loops,Iterator,我正在使用which返回迭代器对象,但IE不支持它。我添加了一个,但现在IE对返回的对象没有任何本机支持,因为它没有实现语法 调用迭代器对象而不使用for..of的首选语法是什么 以下是ES6的语法: var paramsString=“Name=Fiona&Type=Hippo”; var urlParams=新的URLSearchParams(paramsString); var entries=urlParams.entries(); 对于(一对条目){ log(对[0],对[1]); }

我正在使用which返回迭代器对象,但IE不支持它。我添加了一个,但现在IE对返回的对象没有任何本机支持,因为它没有实现语法

调用迭代器对象而不使用
for..of
的首选语法是什么

以下是ES6的语法:

var paramsString=“Name=Fiona&Type=Hippo”;
var urlParams=新的URLSearchParams(paramsString);
var entries=urlParams.entries();
对于(一对条目){
log(对[0],对[1]);
}
var paramsString=“Name=Fiona&Type=Hippo”;
var urlParams=新的URLSearchParams(paramsString);
var entries=urlParams.entries();
对于(一对条目){
log(对[0]+“:“+对[1]);
}

这里是我尝试的迭代器实现,但是
while(true)
让我感到紧张。欢迎任何其他来源/实现

var paramsString=“Name=Fiona&Type=Hippo”;
var urlParams=新的URLSearchParams(paramsString);
var entries=urlParams.entries();
while(true){
var iterator=entries.next()
if(迭代器值){
console.log(迭代器.value[0]+“:”+
迭代器。值[1])
}
if(iterator.done){
打破
}
}

如果您对
感到紧张,而(true)
,您可以尝试以下方法:

var paramsString=“Name=Fiona&Type=Hippo”;
var urlParams=新的URLSearchParams(paramsString);
var entries=urlParams.entries();
var iterator=entries.next();
而(!iterator.done){
if(迭代器值){
console.log(迭代器.value[0]+“:”+
迭代器。值[1])
}
迭代器=entries.next();
}

为什么不把旧的
换成好的

a
console.log(urlparms)
显示返回的对象具有
forEach
方法,但令人惊讶的是,在

var paramsString=“Name=Fiona&Type=Hippo”;
var urlParams=新的URLSearchParams(paramsString);
forEach(函数(值,键){
console.log(键+':'+值)

});
我不完全确定您的约束是什么,但是您也可以在
条目
变量上使用,如果您可以使用的话

var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = [...urlParams.entries()]; // Use spread operator here

// Now entries is just an array with all the normal array methods on it.
entries.forEach(pair => console.log(pair[0], pair[1]));

这个想法很酷,虽然很可能不支持的同一个实例也不支持其他ES6运营商,所以您正在以任何方式传输。以下是两种情况下都不支持的IE。虽然这是传播的一个很酷的潜在用例。-这看起来像答案吗?代码有误导性,因为它实际上循环了3次。
iterator.done
在最后一个元素之后的下一次变为
true
。由于
if(iterator.value)
,它只会第三次打印。但当迭代器包含null、undefined、0、false等值时,也不会打印这些值。
if(iterator.done)
应该在
条目之后。next()
if(iterator.value)
不是必需的
var paramsString = "Name=Fiona&Type=Hippo";
var urlParams = new URLSearchParams(paramsString);
var entries = [...urlParams.entries()]; // Use spread operator here

// Now entries is just an array with all the normal array methods on it.
entries.forEach(pair => console.log(pair[0], pair[1]));