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

标签 javascript for-loop for-of-loop

为什么函数体内的 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 不同for 循环。当您编写 let next = el + 时,您是将 1 添加到一个元素,而不是一个数字(因此,在这种情况下,您正在执行 'A' + 1,就像@Seblor 说的那样)。

tl;dr eli

不同

关于javascript - 为什么函数体内的 for of 循环没有给我传统 for 循环所做的预期输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58840185/

相关文章:

javascript - 从 'for of' 循环输出创建一个数组

javascript - 是否可以使用 mailTo 保留签名?

javascript - 使用不同模板的 AngularJS 指令

javascript - 循环对象数组并合并它们(如果它们具有相似的键)

C素数分解(循环失败?)

c++ - 融合三角循环进行并行化,计算子索引

javascript - 在同级组件之间传递状态 React Router v4

javascript - 如何在响应式设计中防止文本超过 svg?

javascript - 为什么 for-of 不跳过稀疏数组的空槽? [JavaScript]

ecmascript-6 - 如何仅针对 ForOfStatement 关闭 ESLint 的无限制语法规则?