Comment dois-je prendre un tableau de chaînes et de les filtrer?
J'ai un tableau de chaînes de caractères en jQuery. J'ai un autre tableau de mots-clés que je veux utiliser pour filtrer le tableau de chaîne.
Mes deux tableaux:
var arr = new Array("Sally works at Taco Bell", "Tom drives a red car", "Tom is from Ohio", "Alex is from Ohio");
var keywords = new Array("Tom", "Ohio");
Comment puis-je filtrer les arr
tableau à l'aide de la keywords
tableau en jQuery? Dans cette situation, il filtre les "Sally travaille au Taco Bell" et de garder le reste.
Ci-dessous le code que j'utilise.
var keywords= [];
var interval = "";
var pointer = '';
var scroll = document.getElementById("tail_print");
$("#filter_button").click(
function(){
var id = $("#filter_box").val();
if(id == "--Text--" || id == ""){
alert("Please enter text before searching.");
}else{
keywords.push(id);
$("#keywords-row").append("<td><img src=\"images/delete.png\" class=\"delete_filter\" /> " + id + "</td>");
}
}
);
$(".delete_filter").click(
function(){
($(this)).remove();
}
);
function startTail(){
clearInterval(interval);
interval = setInterval(
function(){
$.getJSON("ajax.php?function=tail&pointer=" + pointer + "&nocache=" + new Date(),
function(data){
pointer = data.pointer;
$("#tail_print").append(data.log);
scroll.scrollTop = scroll.scrollHeight;
});
}, 1000);
}
Le but de cela est de permettre à l'utilisateur de filtrer les résultats du journal. De sorte que l'utilisateur effectue une action qui commence startTail()
et $.getJSON()
récupère un objet JSON qui est construit par une fonction PHP et imprime les résultats. Fonctionne parfaitement. Maintenant, je veux donner à l'utilisateur la possibilité pour la filtration de l'arrivée d'un étalement des éléments. L'utilisateur clique sur un bouton filtre et jQuery prend le filtre de texte et l'ajoute à la keywords
tableau alors le data.log
de l'objet JSON est filtré à l'aide de la keywords
tableau et ensuite ajouté à l'écran.
J'ai aussi supprimer la fonction de filtre qui ne fonctionne pas. Peut-être que quelqu'un peut m'aider.
- Ajout de la balise Javascript, parce que c'est un Javascript question (jQuery est une bibliothèque Javascript). Btw, ces tableaux ne semblent pas être les tableaux Javascript...
- J'ai également supprimé le jQuery tag, puisque la question n'a rien à faire avec elle. Aussi, @bazmegakapa est droit. Ceux qui ne sont pas valides les tableaux JavaScript. Qui ressemble à des tableaux PHP. En JavaScript, il suffit d'utiliser les crochets:
var arr = [1, 2, 3]
- Vous avez raison. Désolé... le programme que j'ai écrit utilise une combinaison de jQuery, Javascript, PHP, HTML.. viens un peu mélangé.
- Le jquery tag était très bien, il indique que l'OP accepte des solutions basées sur les méthodes jQuery.
Vous devez vous connecter pour publier un commentaire.
sans jQuery:
.filter
et.bind
du MDN par exemple.de jQuery mot "filtre" est grep
Mise à JOUR
Puisqu'il y a de meilleures réponses ici de jQuery point de vue, j'ai modifié ma réponse à la vanille, JavaScript approche, juste pour ceux qui pourraient avoir besoin de le faire sans jQuery.
$.grep()
de la fonction si. +1hasOwnProperty()
si vous utilisezfor..in
je n'ai honnêtement juste d'utiliser unfor
, vous traitez avec des matrices non des objets. developer.mozilla.org/en/JavaScript/Reference/Global_Objects/...for .. in
parce qu'il ressemble de plus près à ce que je traite avec le plus souvent, Python. Je l'ai changé au-dessus.Sommet de la tête, et non testés. En tant que plugin jQuery:
Alors vous pouvez (soi-disant) de fonctionner que, comme:
Vous pouvez utiliser le bouton [
filter][1]
fonction, mais de toute façon, vous aurez besoin d'une boucle sur les deux tableaux. Vous pouvez utiliserindexOf
pour vérifier si une chaîne est contenue dans une autre chaîne.Live exemple
À l'aide de jQuery fantastiques pouvoirs:
violon: http://jsfiddle.net/LQ92u/1/