search json via javascript: variable enthält wert

  • Hallo zusammen,

    ich habe ein Problem, bei dem ich etwas auf dem Schlauch stehe, und hoffe, ihr könnt mir weiterhelfen.

    Ich habe eine Art Partnerfinder mittels eines Templates gebaut. Im Frontend gibt es ein Suchfeld, wo der User nach Postleitzahl suchen kann und am Ende sollen die Ergebnisse angezeigt werden, die genau passend sind. Aktuell habe ich diesen an dem Punkt gebracht, dass die vollständige Eingabe der Postleitzahl auch das richtige Ergebnis anzeigt. Allerdings ist das nicht das gewünschte Ergebnis, sonder die Search soll im Endeffekt bei jedem einzelnen Wert abfragen (beispiel: zeige alle aus dem Bereich 9, oder zeige alle aus dem Bereich 91..)


    Der Code sieht folgendermaßen aus:


    document.getElementById('zip-code-input').addEventListener('keypress', function(e){

    if(e.which == 13){

    searchStores();

    }

    });



    function searchStores() {

    var foundStores = [];

    var zipCode = document.getElementById('zip-code-input').value;


    if (zipCode) {

    stores.forEach(function (store, index) {

    var postal = store.address.postalCode(substring(0,5);

    if (postal == zipCode ) {

    foundStores.push(store);


    }

    }

    )

    }



    else {

    foundStores = stores;

    }

    clearLocations();

    displayStores(foundStores);

    showStoreMarkers(foundStores);

    setOnClickListener();

    }




    Wie ihr seht, müssen aktuell postal und ZipCode 100% identisch sein, um das Ergebnis angezeigt zu bekommen. Ich glaube, die Lösung liegt darin, zu sagen "Wenn ZipCode in postal enthalten ist oder gleich Postal ist, dann.."


    Meine Javascriptkentnisse reichen allerdings dafür offensichtlich einfach nicht aus.

    Wenn ihr weiterhelfen könntet, wäre das famos!

  • Danke dir! Das habe ich ausprobiert. Aber


    var postal = store.address.postalCode.indexOf(0);


    funktioniert nicht. Denke ich hier richtig, oder muss es in die If funktion?

    Wobei ich auch zipCode.indexOf(postal) schon ausprobiert habe, und auch das funktioniert nicht..


    Vielleicht kannst du mir da noch einmal weiterhelfen?

  • Code
    1. var postal = store.address.postalCode.indexOf(0);

    Da hast Du etwas falsch verstanden oder ich habe es nicht genau genug erklärt:

    Die 0 die ich meinte ist der Rückgabewert von indexOf und Du musst diesen mit if prüfen, etwa so:

    Code
    1. // Wenn ich das richtig verstehe, steht die Benutzereingabe in zipCode
    2. if (store.address.postalCode.indexOf(zipCode) == 0) {
    3. // OK bzw. Treffer, postalCode beginnt mit zipCode;
    4. } else {
    5. // Kein Treffer
    6. }