为什么函数体内的for循环没有给我传统的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中,element
中的for (let element of inerable) {}
与传统i
循环中的for
不同。当您编写let next = el +
时,是将1
添加到元素而不是数字(因此,在这种情况下,您正在执行'A' + 1
,如@Seblor所说)。
tl; dr el
与i
]不同>