0
点赞
收藏
分享

微信扫一扫

工作记录——IP格式化相关操作

微笑沉默 2022-01-13 阅读 26
// 要求:
// 将ip分开,ip属性只存放一个ip,其他ip放到另外一个属性中
let obj = [
    { ip: '192.168.19.1-5' },
    { ip: '192.168.20.1,192.168.9.10' },
    { ip: '192.168.20.13' },
    { ip: '192.168.20.16,192.168.19.2-4' }
]

obj.forEach(e => {
	// 先将ip对象字符串按逗号分割转化为数组
    let ips = e.ip.split(',')
    // 用于存放其他ip
    let otherIP = []
    // 遍历ip数组中的每一个ip
    ips.forEach(ip => {
        // 对每一个ip进行正则匹配,符合标准格式则返回一个数组,否则返回null
        let tmp = ip.match(/\d+\.\d+.\d+\.\d+$/g);
        // 匹配成功
        if (tmp) {
        	// push进其他IP数组
            otherIP.push(tmp[0]);
        } else {  // 匹配不成功
        	// 判断是否为xx.xx.xx.x-x形式的ip
            tmp = ip.match(/\d+\.\d+\.\d+\.\d+-\d+$/g);
            if (tmp) {
            	// 是的话,先将该ip按.分隔
                tmp = tmp[0].split(".");
                // 再取最后一个值按-分隔开,如2-4然后赋给min和max
                let [min, max] = tmp[3].split("-");
                // 循环组合ip然后push到其他IP数组
                for (let i = parseInt(min); i <= parseInt(max); i++) {
                    otherIP.push(`${tmp[0]}.${tmp[1]}.${tmp[2]}.${i}`);
                }
            }
        }

    })
    e.ip = otherIP[0]
    otherIP = otherIP.slice(1)  
    e.otherIP = otherIP
})

console.log(obj)
// [
// {"ip":"192.168.19.1","otherIP":"192.168.19.2,192.168.19.3,192.168.19.4,192.168.19.5"},
// {"ip":"192.168.20.1","otherIP":"192.168.9.10"},
// {"ip":"192.168.20.13","otherIP":""},
// {"ip":"192.168.20.16","otherIP":"192.168.19.2,192.168.19.3,192.168.19.4"}
// ]
举报

相关推荐

0 条评论