While-Loop Logic JavaScript

时间:2016-01-31 04:30:47

标签: javascript arrays while-loop

我试图理解while循环中语句块的逻辑。我理解while循环的表达式,它的长度为#id; idx"不等于-1。将idx值推入索引数组。

我无法理解的陈述是" idx = array.indexOf(element,idx + 1); "

每次迭代后idx是否会增加,因为它会增加1?

如果有人能帮我理解逻辑,我将不胜感激。 我很困惑,因为idx被赋值给array.indexOf(element);

以下代码段来自Mozilla Developers



var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.indexOf(element);

while (idx != -1) {
  indices.push(idx);
  idx = array.indexOf(element, idx + 1);
}

console.log(indices);
// [0, 2, 4]




1 个答案:

答案 0 :(得分:0)

@ dvenkatsagar的答案很接近。

这一点

var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var idx = array.indexOf(element);

是将变量idx初始化为0。因为数组的索引是' a'是0

然后循环开始

while (idx != -1) { // This first tests to make sure there is at least one position for a
  indices.push(idx); // pushes that first index position 0 into the array
  idx = array.indexOf(element, idx + 1); //starts the search again at indexOf position 1... because it was just at 0 and found the 'a' element
}

基本上, 如果这是阵列。 var array = ['1', 'a', 'a', 'a', '1', 'm'];

var idx = array.indexOf(element),会返回' 1' FIRST!

所以idx!= -1并且开始推动!

编辑:澄清while循环的退出。

一旦while循环到达这个新数组indexOf(element, 4);的第4个位置,它就会返回-1退出while循环。