javascript - if 语句评估不正确

标签 javascript

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/

相关文章:

javascript - 有没有办法真正暂停 readline?

javascript - Int32Array 类型的最高和最低整数?

javascript - Cakephp 2.x - 隐藏/显示组合框

javascript - 如何直接在 html 中引用 javascript 函数?

javascript - 为什么我的 HighCharts 图表无法呈现?

javascript - 在选择器中使用正则表达式

javascript - 如何使用 Google Chrome 上的开发人员工具查看范围内所有变量的列表及其在 Javascript 中的值?

javascript - jquery 删除动态行值

javascript - javascript中函数体后的参数列表有什么用?

javascript - jquery scrollToFixed 在到达页面顶部时停止