2016-04-15 19 views
2
var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek']; 
<label>Zoek</label><input type="text" name=”zoek”> 

Hallo, ich muss einen Suchfilter mit diesem Array erstellen. Wenn ich 'van' in den Suchfilter eintippe, brauche ich die Ausgabe des Arrays mit dem ganzen 'van' darin.Suchfilter im Array

Ich versuche schon über eine Hälfte unseres, kann es aber nicht finden, nur der erste Buchstabe funktioniert.

Dies ist, was ich bereits habe, aber ich kann es nur mit dem ersten Buchstaben finden.

function arrayzoek() { 
    document.getElementById('stopwatch').innerHTML = ''; 
    var woord = document.getElementById('woordInput').value; 
    var woord = woord.toUpperCase(); 
    var woord2 = woord.toLowerCase(); 

    for (var i = 0; i < klas.length; i++) { 
     if (woord == klas[i].charAt(0)) { 
      document.getElementById('stopwatch').innerHTML += klas[i] + '<br />'; 
     } 
    } 
} 

Danke.

+2

Sie mit Zitaten in 'name =“ zoek“' – Tushar

+0

Sie können eine Schleife verwenden, [ 'String.indexOf'] (https verwenden sollte: // developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf) um herauszufinden, ob die Zeichenfolge vorhanden ist oder nicht. – h2ooooooo

Antwort

4

Verwenden Sie string.indexof, um nach Teilstrings innerhalb eines Strings zu suchen.

function arrayzoek() { 
    var woord = document.getElementById('woordInput').value.toLowerCase(); 

    var results = klas.filter(function (x) { 
     return x.toLowerCase().indexOf(woord) > -1; 
    }); 

    document.getElementById('stopwatch').innerHTML = results.join('<br />'); 
} 
+1

Äh, es gibt keine solche Methode wie 'String.contains'. – Andy

+0

Es gibt https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes obwohl – georg

+0

Ich muss es so machen, dass ich alles in das Suchfeld eingeben kann nicht nur eintippen ' van 'es war ein Beispiel. –

0

so würde ein Array mit allen Daten zurückgeben, die das Wort enthalten, das Sie finden möchten.

var search[]; 
    var woord = document.getElementById('woordInput').value; 
    for (var i = 0; i < klas.length; i++) { 
     if(i.indexOf(woord)!=-1) 
     { 
      search.push(i); 
     } 
    } 
+0

okay, nur folgen Adnan Umer antwort – UserBlanko

0

var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek']; 
 

 
document.getElementById("txtZoek").addEventListener("keyup", arrayZoek, false); 
 

 
function arrayZoek() { 
 
    var inputWord = document.getElementById("txtZoek").value; 
 
    document.getElementById("stopwatch").innerHTML = ""; 
 
    if (inputWord !== "") { 
 
    for (var i = 0; i < klas.length; i++) { 
 
     if (klas[i].indexOf(inputWord) >= 0) { 
 
     document.getElementById("stopwatch").innerHTML += klas[i] + "<br/>"; 
 
     } 
 
    } 
 
    } else { 
 
    document.getElementById("stopwatch").innerHTML = ""; 
 
    } 
 
}
label { 
 
    margin-right: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label>Zoek</label> 
 
<input type="text" id="txtZoek" /> 
 
<br/> 
 
<span id="stopwatch"></span>

bearbeiten
es geändert in einfachen Javascript-Code

+0

Mag het niet traf JQuery maken moet mit Javascript maar danke. –

+0

Ok. Geen problem :) Ich arbeite daran! – Jorrex

+0

geen jQuery meer – Jorrex

0

Dies ist eine Lösung:

var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek']; 

var woord = document.getElementById('woordInput').value; 
var results = arrayzoek(woord, klas); 
document.getElementById('stopwatch').innerHTML = results.join('<br />'); 

function arrayzoek(input, data) { 
    var re = new RegExp(input, 'gi'); 
    var result = data.filter(function(item) { 
     return re.test(item); 
    }); 
    return result; 
} 

I t verwendet filter, regexp und join, was sehr nützlich und leistungsstarke javascript Vermögenswerte sind ...

Es trennt auch die DOM-Manipulation von reiner JavaScript-Funktion, die in einer konsistenteren Programmarchitektur führt.

Leider weiß ich nicht niederländische Sprache, so Variablen und Funktionsnamen wahrscheinlich verbesserungsfähig sind :)

+0

Es ist nicht erforderlich, die Regex für jedes Mal zu deklarieren, wenn der Filter-Callback aufgerufen wird. – Andy

+0

Richtig, tut mir leid ... Aktualisierte Antwort – MarcoS

0
var filteredArr = [],i,temp, regExp = /van/i; 
    temp= klas[i]; 

for(i =0;i<klas.length;i++){ 
    if(Array.isArray(temp) && regExp.test(temp)){ 
     filteredArr.push(temp) 
    } 
} 

alert(filteredArr) 
0

bereits. beachten Sie, dass i

$(function() { 
 
    var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek']; 
 
    $("#tags").autocomplete({ 
 
    source: klas 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
 
<div class="ui-widget"> 
 
    <label for="tags">Zoek:</label> 
 
    <input id="tags"> 
 
</div>

0

Hier jQuery verwendet haben, ist schöne Bibliothek, die Sie für die Suche und Verwaltung von Arrays

http://underscorejs.org/

find_.find (Liste, Prädikat hilft, [context]) Alias: detect Sucht durch jeden Wert in der Liste und gibt den ersten Wert zurück, der eine WahrheitübergibtTest (Prädikat) oder undefiniert, wenn kein Wert den Test besteht. Die Funktion gibt zurück, sobald ein akzeptables Element gefunden wird, und durchläuft nicht die gesamte Liste.

var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; }); 
=> 2 

nach Ihrem Beispiel:

var klas = ['Nick Arts', 'Thijs Assmann', 'Rick Bats', 'Kim Cobben', 'Richard van Dartel', 'Dennis van Empel', 'Luuk van Gennip', 'Florent Guichard', 'Mahamed Hassan', 'Stijn Hendriks', 'Dirk van Herpen', 'Daniël Kartotaroeno', 'Tony van Klink', 'Stephan Klomp', 'Twan Korthout', 'Max Lenssen', 'Aron van der Linden', 'Aron de Looijer', 'Anil Manbodh', 'Sietse Manders', 'Ben Moerkens', 'Sven van Mourik', 'Teun Salters', 'Sven Slijkoord', 'Daan Soeten', 'Joey van Straalen', 'Koen van Veen', 'Maxim Westbroek']; 



    return _.contains(klas, 'van');