为什么函数体内的for循环没有给我传统的for循环所做的预期输出?

问题描述 投票:0回答:1

为什么函数体内的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 for-loop for-of-loop
1个回答
1
投票

您的问题在您的第一个职能中。

在JavaScript中,element中的for (let element of inerable) {}与传统i循环中的for不同。当您编写let next = el +时,是将1添加到元素而不是数字(因此,在这种情况下,您正在执行'A' + 1,如@Seblor所说)。

tl; dr eli]不同>

© www.soinside.com 2019 - 2024. All rights reserved.