// 要求:
// 将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"}
// ]