我试图理解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]

答案 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循环。