2015-06-22 138 views
0

我正在构建一个javascript for循环,我想将数组的值与数组中的下一个值进行比较。Javascript:Forloop i ++和(i + 1)之间的区别

如果两个值都不相等,我想返回true,否则我想返回false。

在下面的代码我传递字符串 “ABA”,将它和它然而排序,以

sortedLetters = ["a", "a", "b"] 

,当我比较sortedLetters sortedLetters [0]( “一”)[1]

功能isIsogram(STR){

// split each letter into an array and sort 
    sortedLetters = str.split("").sort(); 

    console.log(sortedLetters[0]); // is "a" 
    console.log(sortedLetters[1]); // should be "a" 

    // iterate through the array and see if the next array is equal to the current 
    // if unequal, return true 
    for(i = 0; i < sortedLetters.length; i++) { 
     if(sortedLetters[i] !== sortedLetters[(i+1)]) return true; 
    } 
    // for "a" and "a", it should return false 

    return false; 

}; 

document.write(isIsogram("aba")); 

然而,为什么if语句的工作,但上面的代码不下列?

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

回答

2

i++使用后增量,所以表达式i++的值是什么值在变量i增量之前。此代码:

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

做同样的事情:

if(sortedLetters[i] !== sortedLetters[i]) return true; 
i = i + 1; 

由于x !== x总是对的x任何稳定值为false,代码做同样的事情:

if(false) return true; 
i = i + 1; 

您可以使用预增加版本++i,但是如果您在语句中增加变量,则不应在循环中增加它:

for (i = 0; i < sortedLetters.length;) { 
    if (sortedLetters[i] !== sortedLetters[++i]) return true; 
} 
1

很简单,索引是相同的在此表达式:

if(sortedLetters[i] !== sortedLetters[i++]) return true; 

如果for循环计数器在3,例如,它会评估sortedLetters[3] !== sortedLetters[3]之前中的值递增。

在for循环中使用i++也会使您的计数器增加两倍。

相关问题