1 javascript arrays string-matching node.js
我收到两个IP地址数组,格式不同.应该从地址数组中删除IP数组中的任何值 - 但前提是IP完全匹配.我写了下面的内容,但问题是,例如,192.168.0.1将匹配192.168.0.11,然后从地址数组中删除192.168.0.11,这不是有效的结果.地址数组需要以与接收时相同的格式返回.有什么帮助吗?:)
var addresses = [{
Value : '192.168.0.11'
}, {
Value : '52.210.29.181'
}, {
Value : '52.210.128.97'
}
];
var IPs = ['192.168.0.1', '52.210.128.97'];
console.log('Before:', addresses);
for (var x = 0; x < IPs.length; x++) {
for (var key in addresses) {
var address = JSON.stringify(addresses[key]);
if (address.indexOf(IPs[x]) > -1){ //if the IP is a substr of address
console.log('matched, so delete', addresses[key]);
var index = addresses.indexOf(addresses[key]); //find the index of IP to be deleted then delete it
addresses.splice(index, 1);
}
}
}
console.log('After', addresses);
Run Code Online (Sandbox Code Playgroud)
使用干净的方法Array.filter:
var addresses = [{
Value: '192.168.0.11'
},
{
Value: '52.210.29.181'
}, {
Value: '52.210.128.97'
}];
var IPs = ['192.168.0.1', '52.210.128.97'];
var filterdAddresses = addresses.filter(function (item) {
var match = false;
IPs.forEach(function (ip) {
if (item.Value == ip) {
match = true;
}
});
return !match;
});
console.log(filterdAddresses);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |