我有这样的数组

var ALLOW_SUBNET = ['192.168.1.', '192.168.2.', '192.168.3.' , '192.168.4.'];

我可以使用自己的功能获取PC Client的IP地址:
getIPClient()
    var ipclient = input.getIPClient();

我的问题是如何检查客户端IP是否在允许的子网内,我尝试使用indexOf()函数,但结果错误。
例如:
if IP Client is 192.168.1.115 => allow

if IP Client is 192.168.5.115 => deny.

最佳答案

您可以使用 Array#some 并检查ALLOW_SUBNET的一部分是否在ip0内部。

function check(ip) {
    return ALLOW_SUBNET.some(function (a) { return !ip.indexOf(a); });
}

var ALLOW_SUBNET = ['192.168.1.', '192.168.2.', '192.168.3.', '192.168.4.'];

console.log(check('192.168.1.115'));
console.log(check('192.168.5.115'));


String#startsWith 的ES6

function check(ip) {
    return ALLOW_SUBNET.some(a => ip.startsWith(a));
}

var ALLOW_SUBNET = ['192.168.1.', '192.168.2.', '192.168.3.', '192.168.4.'];

console.log(check('192.168.1.115'));
console.log(check('192.168.5.115'));

07-24 09:50
查看更多