Ich arbeite an einer Anwendung, bei der meine Benutzer auswählen sollen, welche Ergebnisse basierend auf den Städten angezeigt werden sollen.

Derzeit ist die Art und Weise, wie die Anwendung funktioniert, eine Suchmaschine für Jobs, für die Benutzer Folgendes angeben können:

  • Berufsbezeichnung
  • Land

Angenommen, der Benutzer hat die folgenden Einstellungen database in Cyprus hinzugefügt, werden die folgenden Adressen angezeigt:

Array von 4 Elementen (cityName, postCode, CountryCode, Street Address)

LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LARNAKA - SOTIR | 6057 | cy | ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA
STROVOLOS       | 2064 | cy | ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
LAKATAMEIA      | 2322 | cy | Arch. Makariou III and Mesaorias 1 2322 LEFKOSIA

Ich habe online gesucht und herausgefunden, dass Zypern die folgenden Städte hat: Lefkosia or Nicosia Paphos Limassol or Lemesos Larnaka or Larnaca und schließlich Ammohostos or Famagusta.

Was ich herausfinden möchte, ist, nur die Jobs anzuzeigen, die nach dem Namen der Stadt ausgewählt wurden. Wenn ein Benutzer beispielsweise beschließt, nur Jobs in Lefkosia or Nicosia anzuzeigen, sollten nur vier Ergebnisse angezeigt werden. Das ist:

STROVOLOS       | 2064 | cy | ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
LAKATAMEIA      | 2322 | cy | Arch. Makariou III and Mesaorias 1 2322 LEFKOSIA

Ich bin mir nicht sicher, wie ich das am besten machen soll. Ich bin nicht dafür verantwortlich, wie die Speicherorte gespeichert werden, da ich Web-Scraping verwende, um diese Informationen abzurufen. Auch im obigen Beispiel hat keines der 4 bereitgestellten Ergebnisse eine korrekte Methode zum Speichern der Städtenamen.

Eine Lösung, die ich mir vorstellen kann, besteht darin, das letzte Stück der Adresse zu erhalten. Aber ich bin mir nicht sicher. Ich muss mich auch mit den meisten europäischen Ländern befassen und nicht nur mit Zypern aus diesem Beispiel.

Wenn Sie wissen, wie Sie dieses Problem lösen können, lassen Sie es mich bitte wissen.


UPDATE:

Tatsächliches Array:

0: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
1: "LARNAKA - SOTIR 6057 cy ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA"
2: "EDEGEM 2650 be Acht Eeuwenlaan"
3: "STROVOLOS 2064 cy ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA"
4: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
5: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
6: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
7: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
8: "LAKATAMEIA 2322 cy Arch. Makariou III and Mesaorias 1  2322 LEFKOSIA"
0
user14054150 19 Aug. 2020 im 16:36

2 Antworten

Beste Antwort

Sie können filtern

const addr = `0: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
1: "LARNAKA - SOTIR 6057 cy ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA"
2: "EDEGEM 2650 be Acht Eeuwenlaan"
3: "STROVOLOS 2064 cy ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA"
4: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
5: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
6: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
7: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
8: "LAKATAMEIA 2322 cy Arch. Makariou III and Mesaorias 1  2322 LEFKOSIA"`.split(/\n/);
document.getElementById("cc").addEventListener("input",function() {
  const val = this.value.toLowerCase();
  const lines = addr.filter(line => line.toLowerCase().includes(val))
  document.getElementById("res").innerHTML = lines.join("<br/>");
})
<input type="text" id="cc" placeholder="Type city or country" />
<div id="res"></div>

Ältere Beiträge:

Verwenden Sie die Postleitzahl, um zu teilen:

const addr = `LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LARNAKA - SOTIR | 6057 | cy | ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA
STROVOLOS       | 2064 | cy | ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
LAKATAMEIA      | 2322 | cy | Arch. Makariou III and Mesaorias 1 2322 LEFKOSIA
Den Haag        | 2221AA | nl | Onder de brug 25, 2221AA 's Gravenhage
East End          | E20 6PQ | uk | Albert Square E20 6PQ London`.split(/\n/);
const cities = [...new Set(addr.map(line => {
  const [place,postcode,_,addr] = line.split("|");
  return addr.split(postcode)[1]
  })
)]; 
console.log(cities)

In Ihrem Beispiel und das allein können Sie auch diesen regulären Ausdruck verwenden

const addr = `LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LARNAKA - SOTIR | 6057 | cy | ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA
STROVOLOS       | 2064 | cy | ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
LAKATAMEIA      | 2322 | cy | Arch. Makariou III and Mesaorias 1 2322 LEFKOSIA`.split(/\n/);
const cities = [...new Set(addr.map(line => line.match(/(?:\d)+ (\w+)$/)[1]))]; 
console.log(cities)

Update verwendet den regulären Ausdruck erneut für das tatsächlich bereitgestellte Array

Es kann nicht mit 2 umgehen: "EDEGEM 2650 be Acht Eeuwenlaan"

const addr = `0: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
1: "LARNAKA - SOTIR 6057 cy ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA"
2: "EDEGEM 2650 be Acht Eeuwenlaan"
3: "STROVOLOS 2064 cy ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA"
4: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
5: "LEMESOS 3042 cy ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS"
6: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
7: "EGKOMI 2404 cy Διογένους 1, Κόμβος A, 5ος όροφος  2404 LEFKOSIA"
8: "LAKATAMEIA 2322 cy Arch. Makariou III and Mesaorias 1  2322 LEFKOSIA"`.split(/\n/);
const cities = [...new Set(addr.map(line => {
  const pCode = line.match(/(\d{2,}) /)[1];
  return line.split(pCode)[2];
  })
)]; 
console.log(cities)
1
mplungjan 19 Aug. 2020 im 14:18
const addr = `LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LARNAKA - SOTIR | 6057 | cy | ΣΠΥΡΟΥ ΚΥΠΡΙΑΝΟΥ 50, ΙΡΙΔΑ 3 10-ΟΣ ΟΡΟΦΟΣ 6057 LARNAKA
STROVOLOS       | 2064 | cy | ΒΥΖΑΝΤΙΟΥ 30 FLAT/ OFFICE 22 2064 LEFKOSIA
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
LEMESOS         | 3042 | cy | ΡΙΧΑΡΔΟΥ & ΒΕΡΕΓΓΑΡΙΑΣ 12 ARAOUZOS CASTLE COURT, 3ΟΣ ΟΡΟΦΟΣ 3042 LEMESOS
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
EGKOMI          | 2404 | cy | Διογένους 1, Κόμβος A, 5ος όροφος 2404 LEFKOSIA
LAKATAMEIA      | 2322 | cy | Arch. Makariou III and Mesaorias 1 2322 LEFKOSIA`.split(/\n/);
$.each(addr, function(i, val){
  if(/LEFKOSIA/.test(val)){
    console.log(val);
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Ich habe jeweils eine Abfrage in Kombination mit einem regulären Ausdruck verwendet. Wenn Sie Benutzereingaben für die Stadt verwenden würden, wird dies wie folgt aussehen:

let regex = RegExp('userInput')
if(regex.test(val)){//true code//}
0
DutchDev 19 Aug. 2020 im 13:57