为什么函数体内的 for of 循环没有给我传统 for 循环所做的预期输出?好像for循环中的el和for循环中的iterable[i]不一样?
var uniqueInOrder = function(iterable){
let unique = [];
for(let el of iterable){
let cur = el;
let next = el + 1;
if(cur !== next){
unique.push(cur)
}
}
return unique;
}
uniqueInOrder('AAAABBBCCDAABBB') // unexpected output
// Returns expected output
var uniqueInOrder = function(iterable){
let unique = [];
for(var i = 0; i < iterable.length; i++){
let cur = iterable[i];
let next = iterable[i + 1];
if(cur !== next){
unique.push(cur)
}
}
return unique;
}
uniqueInOrder('AAAABBBCCDAABBB') // ----> ["A", "B", "C", "D", "A", "B"]
最佳答案
您的问题出在您的第一个函数中。
在 JavaScript 中,for (let element of inerable){}
中的 element
与传统 中的
循环。当您编写 i
不同forlet next = el +
时,您是将 1
添加到一个元素,而不是一个数字(因此,在这种情况下,您正在执行 'A' + 1
,就像@Seblor 说的那样)。
tl;dr el
与 i
关于javascript - 为什么函数体内的 for of 循环没有给我传统 for 循环所做的预期输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58840185/