So habe ich das seltsamste Problem vorstellen, habe ich ein Javascript-Array, das viele Nachnamen enthält, soll es durch den Text gehen und Namen durch Radfahren durch die Wörter, die es gegeben ist und sie in ein indexOf des Feldes, um zu sehen, wenn es nicht-negativ ist, jedoch machte ich einen Fehler beim Teilen des Feldes zuerst, wo ich auf Regex \ s teilte, und es hatte eine leere Zeichenkette zwischen den einzelnen regulären Strings. Lustig genug, dass man tatsächlich funktioniert, aber als ich es reparierte, um \ n aufzuspalten, war das Array das gleiche (minus die leeren Zeichenfolgen), aber jetzt weigert es sich, über den indexOf bei den gleichen Eingaben übereinzustimmen. Ich habe einen Haltepunkt in die Konsole gesetzt, um es selbst zu überprüfen, aber ich fand den seltsamsten Zufall, auf den ich noch stoßen muss (Bilder unten).Javascript-Array weigert sich, IndexOf zurückzugeben, auch wenn Übereinstimmung auftritt
The initial accident, which oddly works
The fix which somehow doesn't work
Ich habe viel Erfahrung Codierung, aber ich habe keine Ahnung, was hier los, bitte helfen Sie.
Hier ist der Code als Referenz
function findPeople(text,nameList){
text=text.replace(/[^a-z0-9\s]/gi, " ");
text=text.replace(/\s+/gi," ");
var spliText=text.split(/\s+/gi);
nameList=nameList.split("|")
var fnames=nameList[0].split(/\s/gi);
var lnames=nameList[1].split(/\s/gi);
console.log(fnames.slice(0,15),lnames.slice(0,15))
var matches = [];
for (var i=0;i<spliText.length;i++){
var word1=spliText[i].toLowerCase();
try{var word2=spliText[i+1].toLowerCase();}catch(e){word2="NOPE";}
try{var word3=spliText[i+2].toLowerCase();}catch(e){word3="NOPE";}
try{var word4=spliText[i+3].toLowerCase();}catch(e){word4="NOPE";}
if (fnames.indexOf(word1) != -1 && lnames.indexOf(word3) != -1 && word1!=word3 && !/(st|ln|lane|rd|road|dr|blv|cir|way|wy|pass)(?![a-z])/i.test(word4) && matches.indexOf(word1 + " " + word3) == -1){
matches.push(word1 + " " + word3);
}else if (fnames.indexOf(word1) != -1 && lnames.indexOf(word2) != -1 && word1!=word2 && !/(st|ln|lane|rd|road|dr|blv|cir|way|wy|pass)(?![a-z])/i.test(word3) && matches.indexOf(word1 + " " + word2) == -1){
matches.push(word1+" "+word2);
}else if (fnames.indexOf(word1) != -1 && !/(st|ln|lane|rd|road|dr|blv|cir|way|wy|pass)(?![a-z])/i.test(word2) && matches.indexOf(word1) == -1){
matches.push(word1);
}
}
return matches;
}
Warum haben Sie das 'g' Flag auf allen Ihren regulären Ausdrücken? – Pointy
poste auch dein Array. – mehulmpt
die 'Working Fix' und die' Non Working Fix' Arrays, soll ich sagen. – mehulmpt