2 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
循環(huán)遍歷IP地址并將地址保存為Object的鍵,如果遍歷Object中已有的IP,則tracker可以獲取其值并將其遞增1或默認(rèn)為1如果它不存在,因?yàn)樗鼘⑹悄愕谝淮斡龅侥莻€(gè)IP。
const data = [
'192.168.1.254',
'192.168.1.254',
'192.168.1.254',
'192.168.1.254',
'192.168.1.254',
'10.40.89.79'
]
const tracker = {}
data.forEach(d => {
const count = d in tracker ? ++tracker[d] : 1
tracker[d] = count
})
Object.keys(tracker).forEach(k => console.log(`${k} (${tracker[k]})`))

TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果我理解正確,你想從字符串中獲取所有ip-adresses然后將它們堆疊(刪除重復(fù)項(xiàng))。所以這個(gè)正則表達(dá)式:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
可以檢查IP地址?,F(xiàn)在使用replace方法,我們可以獲得所有的正則表達(dá)式匹配。然后我們可以遍歷它們并刪除重復(fù)項(xiàng)??纯催@段代碼:
var str = something;
var IPs = [];
str.replace(
/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gi,
function(match) {
IPs[IPs.length] = match;
return match;
}
);
var stackedIPs = {};
for (i = 0; i < IPs.length; i++) {
if (stackedIPs[IPs[i]] == null) {
stackedIPs[IPs[i]] = 1;
} else {
stackedIPs[IPs[i]] = stackedIPs[IPs[i]] + 1;
}
}
StackedIPs將為您提供如下所示的對(duì)象:
{
192.168.1.1: 3,
192.168.1.5: 2,
...
}
分配給每個(gè)IP地址的號(hào)碼是找到它的次數(shù)。
添加回答
舉報(bào)