Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当一次运行两个for循环来创建一个等值线图时,为什么该算法要求我生成j=i+;1._Javascript_For Loop - Fatal编程技术网

Javascript 当一次运行两个for循环来创建一个等值线图时,为什么该算法要求我生成j=i+;1.

Javascript 当一次运行两个for循环来创建一个等值线图时,为什么该算法要求我生成j=i+;1.,javascript,for-loop,Javascript,For Loop,等值线是一个没有连续或非连续重复字母的单词。 为什么我需要设置j=I+1 var git = "pot-luck" function isIsogram(str){ var i; var j str = str.toLowerCase(); for(**i = 0**; i < str.length; ++i){ for(**j = i+1** ; j < str.length; ++j){ if(str[i] === str[j])

等值线是一个没有连续或非连续重复字母的单词。 为什么我需要设置j=I+1

var git = "pot-luck"

function isIsogram(str){
  var i; var j
  str = str.toLowerCase();
  for(**i = 0**; i < str.length; ++i){
    for(**j = i+1** ; j < str.length; ++j){
      if(str[i] === str[j])
        return false;}
  }
  return true;
}

isIsogram(git)
var git=“运气好”
函数isIsogram(str){
变量i;变量j
str=str.toLowerCase();
对于(**i=0**;i
当你开始循环时,你从
索引0
开始,使用
i
。在本例中,您正在示例中检查“g”


然后使用
j
循环,但不需要再次检查'g',因此可以在
i
中添加一个,并从下一个索引开始,即字母'i'。依此类推,直到完成字符串循环。

好的,让我们举两个简单的例子:nomm和ABCDEFG

这些是带有索引的数组:

0 - N
1 - O
2 - M
3 - I
4 - M
以及:

第一个示例具有重复的M。
让我们来看看这个循环

所以
i=0
然后
j
1循环到4

Comparing `N to O` - No Match
Comparing `N to M` - No Match
Comparing `N to I` - No Match
Comparing `N to M` - No Match
Comparing `M to I` - No Match
Comparing `M to M` - Match.  Exit because a letter repeated.
现在我们转到
i=1
j
2到4的循环,因为我们知道第一个字符没有重复

Comparing `O to M` - No Match
Comparing `O to I` - No Match
Comparing `O to M` - No Match
我们现在知道O没有重复。我们继续测试
i=2
j
3到4

Comparing `N to O` - No Match
Comparing `N to M` - No Match
Comparing `N to I` - No Match
Comparing `N to M` - No Match
Comparing `M to I` - No Match
Comparing `M to M` - Match.  Exit because a letter repeated.

第二个例子,我们将以同样的方式循环。逐一核实。一旦我们确定一封信没有重复,我们就不必重新检查之前验证过的信。这就是为什么我们在
i

之后为每个字母循环
j
,因为您已经检查了前面的字母。你只需要确保一封信不会重复。我完全迷路了,你能再详细一点吗?再补充一点。如果i和j从同一个索引开始,它们都是假的,因为你会将相同的数字相互比较,这是真的。肯定会破坏检查的目的。