gpt4 book ai didi

javascript - 使用正则表达式仅获取一场匹配

转载 作者:行者123 更新时间:2023-11-28 02:26:00 25 4
gpt4 key购买 nike

在下面的函数中,我迭代包含字符串的数组(事件)。这些字符串描述了从另一个网络应用程序中删除的事件(犯罪或事故),而我正在做的是划分和计算不同的犯罪/事故并将它们放置在一个对象中(INCIDENT_MATCHES)。

但是,某些文本字符串可能包含我搜索的几个关键字(例如“gunfire”和“battery”),但我不想要这些关键字。相反,我只想对第一个找到的单词进行计数,如果找到更多关键字,则应忽略它们。

这是怎么做到的?

var INCIDENT_MATCHES = {
battery: /\w*(bråk)\w*|överfall|slagsmål|slogs|misshandel|misshandlad|\w*(tjuv)\w*/ig,
burglaries: /snattade|snattare|snatta|inbrott|bestulen|stöld|\w*(tjuv)\w*/ig,
robberies: /\w*(rån)\w*|personrån|\w*(ryckning)\w*|väskryckt*/ig,
gunfire: /skottlossning|skjuten|sköt/ig,
drugs: /narkotikabrott/ig,
vandalism: /skadegörelse|klotter|\w*(klottra)\w*/ig,
trafficAccidents: /(trafik|bil)olycka|(trafik|bil)olyckor|\w*(personbil)\w*|singelolycka|kollision|\w*(kollidera)\w*|påkörd|trafik|smitningsolycka/ig,
};

var j = 0,
incidentCounts = {},
incidentTypes = Object.keys(INCIDENT_MATCHES);

incidents.forEach(function(incident) {
matchFound = false;

incidentTypes.forEach(function(type) {
if(typeof incidentCounts[type] === 'undefined') {
incidentCounts[type] = 0;
}
var matchFound = incident.match(INCIDENT_MATCHES[type]);

if(matchFound){
matchFound = true;
incidentCounts[type] += 1;
}
});

j++;
});

最佳答案

您可以从“each”处理程序返回false来停止迭代。

    if(matchFound){
matchFound = true;
incidentCounts[type] += 1;
return false;
}

编辑 - 你会想要(我认为)在外循环结束时进行另一个测试:

  j++; // I don't understand what that does ...
if (matchFound) return false;

关于javascript - 使用正则表达式仅获取一场匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14941121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com