Ich benutze jquery, um eine JSON-Zeichenfolge für die übereinstimmende URL zu suchen und dann alle Daten innerhalb dieses Objekts abzurufen.jQuery.grep() entspricht URL www und nicht www, http/https
hole ich die URL mit
var url = window.location.href;
Doch diese gibt
in der JSON-String könnte eine der folgenden
- http://somesite.com/
- http://somesite.com
- http://www.somesite.com/
- http://www.somesite.comhttps://somesite.com/
etc etc.
Mein Code ist die URL anzupassen und dann etwas zu tun. Wie würde ich jQuery.grep() verwenden, um die verschiedenen Stil-URLs in der Abfrage zu verwenden? Unten ist mein Code soweit.
var url = window.location.href;
var json = exampleJsonString;
var js = JSON.parse(json);
var result = $.grep(js, function(e){ return e.url == url; });
if (result.length == 0) {
// not found :(
console.log('Not found');
} else if (result.length == 1) {
// Result matched
console.log(result);
}
else {
// multiple items found
console.log('multiple items found');
console.log(result);
}
Was ich tun möchte, ist für somesite.com mit jquery grep überprüfen. Wie in dieser Zeile überprüft es, ob die Zeichenfolge gleich ist.
var result = $.grep(js, function(e){ return e.url == url; });
Sie könnten 'http: //', 'www.' und' .com' von beiden entfernen und dann vergleichen. Wenn Sie an der Domain-Namensanpassung interessiert sind –
Nun, natürlich hält Sie nichts davon ab, in Ihrer grep-Filter-Callback-Funktion nach verschiedenen Werten zu suchen. Aber vielleicht möchten Sie mit location.hostname anstatt mit dem vollständigen href (?) Beginnen - das könnte die Zuordnung erleichtern. (Wenn das funktioniert, hängt natürlich davon ab, welche spezifischen Ergebnisse Sie brauchen, worüber Sie nichts gesagt haben.) – CBroe
Nun, das Problem ist, dass der Grep die JSON-Zeichenkette nach der URL durchsucht. Wenn es nicht passt, macht es den Rest nicht. Also mit $ .grep (js, funktion (e) {return e.url == url;}); wird genau dieser URL entsprechen, auch ein Trailing/wird es zwingen zu sagen, nicht gefunden. Ich weiß, wie man eine URL regexiert, aber was ich regexieren will, ist wahrscheinlich nur der Teil von somesite.com. Aber ich bin mir nicht sicher, wie ich jQuery.grep() sagen kann – ServerSideSkittles