javascript - 将 IP 与存储在数组中的范围进行匹配

标签 javascript jquery

我返回一个 IP,然后将其与某个范围进行比较。

我只是查看美国 IP,如果它落在某个范围内,我将显示一条消息。我正确获取了 IP,但当我尝试将其与范围匹配时,出现意外范围的语法错误。我该如何解决这个问题?

这是我的代码的样子

$.getJSON("http://jsonip.com", function (data) {
    var x = data.ip;
    $('body').html(x);

    var usRange = [3.0.0.0, 222.229.21.255];
    if (x >= usRange[0] && x <= usRange[1]) {
        alert('US');
    } else alert('outside US');
});

这是我的 fiddle

最佳答案

错误的含义是,您无法分配带有 4 个小数点的数字。

var usRange = [3.0.0.0, 222.229.21.255]; //Not possible

仅供引用:json返回的IP地址是字符串不是数字.

所以你的方法行不通。在这里检查我的方法,

1)根据$.getJSON返回的.分割ip地址

var x = data.ip.split('.');  // returns ["122", "164", "17", "211"]

2) 不使用 usRange 数组,只需通过简单的比较操作来实现

3)您无法将字符串与数字进行比较,因此请将这些字符串转换为数字,例如

+x[0] //convert "122" to 122

最后,

$.getJSON("http://jsonip.com", function (data) {
    var x = data.ip.split('.');
    if (+x[0] >= 3 && +x[0] <= 222) {
        if (+x[1] >= 0 && +x[1] <= 229) {
            if (+x[2] >= 0 && +x[2] <= 21) {
                if (+x[3] >= 0 && +x[3] <= 255) {
                    alert("Within range");
                }
            }
        }
    } else {
        alert("Is not within range");
    }
});

JSFiddle

关于javascript - 将 IP 与存储在数组中的范围进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303690/

相关文章:

javascript - 必须在 jQuery 上单击两次

javascript - ng-repeat 和 "Controller as"

javascript - 如何获取文本的宽度并相应地调整模板的大小?

javascript - 使用 jQuery 从 asp.net 响应中检索 JSON 值

Jquery 单选按钮检查

javascript - 如何在 jQuery/Javascript 中固定/取消固定下拉菜单?

JavaScript 对象表示法 - 在同一对象内使用方法?

javascript - 在 Firebase Promise 中使用 'this' 和 React Native

javascript - 拉斐尔用鼠标绘制路径

javascript - HTML5 和 jQuery LocalStorage