Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào hai địa chỉ IPv4, và trả về số địa chỉ giữa chúng (bao gồm địa chỉ đầu, loại trừ địa chỉ cuối).
Điều này có thể thực hiện bằng cách chuyển đổi chúng sang thập phân và tìm hiệu tuyệt đối.
Ví dụ
Dưới đây là mã:
const ip1 = '20.0.0.10';
const ip2 = '20.0.1.0';
const countIp = (ip1, ip2) => {
let diff = 0;
const aIp1 = ip1.split(".");
const aIp2 = ip2.split(".");
if (aIp1.length !== 4 || aIp2.length !== 4) {
return "Invalid IPs: incorrect format";
}
for (x = 0; x < 4; x++) {
if (
isNaN(aIp1[x]) || isNaN(aIp2[x])
|| aIp1[x] < 0 || aIp1[x] > 255
|| aIp2[x] < 0 || aIp2[x] > 255
) {
return "Invalid IPs: incorrect values"
}
diff += (aIp1[x] - aIp2[x]) * (256 * (3-x));
}
return Math.abs(diff);
};
console.log(countIp(ip1, ip2));
Kết quả
Kết quả console:
256