function ipsBetween(start, end){
var count = 0;
for(var i = 0; i < 4; i++) {
if(start.split('.').slice(i, i + 1) != end.split('.').slice(i, i + 1)) {
count++;
}
}
return count;
}
我试图找到一个范围内所有可能的 IP。上面的代码只是一个开始。我试图将 IP 分成几部分并检查它们是否相等。当我这样做时,有趣的是,即使值相等,它也会将 if 语句评估为 true 并增加计数。这是我的测试用例:
ipsBetween("10.0.0.0", "10.0.0.50")
这个测试用例返回 4,而它应该返回 1。我不知道为什么会这样。我隐含地查看了 start.split('.').slice(i, i + 1) 和 end.split('.').slice(i, i + 1) 的值) 前三个元素似乎是相等的。
最佳答案
这里真的没有必要使用.slice()
。 (这就是导致问题的原因:.slice()
返回一个数组,并且两个不同的数组永远不会彼此相等。)首先拆分字符串,然后只使用数组索引:
var count = 0;
start = start.split("."); end = end.split(".");
for (var i = 0; i < start.length; ++i)
if (start[i] != end[i])
count++;
return count;
关于javascript - if 语句评估不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31660045/