Donc, fondamentalement, je voudrais créer une fonction qui, lorsqu'elle est alertée, renvoie l'URL d'un tableau (dans ce cas, le tableau est déclaré en tant que «sites Web»). La fonction a deux paramètres «sites Web» et «searchTerm».
J'ai du mal à faire en sorte que la fonction se comporte, de sorte que lorsque je tape yahoo ou google ou bing dans le paramètre searchTerm de la fonction; Je veux qu'il renvoie l'URL correspondante.
Toute aide ou soutien serait grandement apprécié. Désolé si je n'ai pas été clair dans mon explication, si c'est le cas, faites-le moi savoir et je vais essayer d'être plus clair dans mon explication.
Merci d'avance!
5 réponses
Voici comment:
var websites = ["www.google.com|Google" , "www.yahoo.com|Yahoo" , "www.bing.com|Bing"];
function filterURL(websites,searchTerm)
{
for (var i = 0; i < websites.length; i++) {
if (websites[i].split('|')[1] === searchTerm) {
return websites[i].split('|')[0];
}
}
}
Exemple de travail
Vous pouvez également valider et améliorer la fonction:
function filterURL(websites,searchTerm)
{
if (typeof websites != 'Array' || ! searchTerm) return false;
for (var i = 0; i < websites.length; i++) {
if (websites[i].split('|')[1] === searchTerm) {
return websites[i].split('|')[0];
}
}
return false;
}
Je ne sais pas pourquoi vous souhaitez utiliser un tableau pour cela, car ce que vous faites correspond mieux à une paire clé-valeur; cependant, voici comment je le ferais:
function filterURL(websites, searchTerm) {
var i = 0,
parts;
for (i = 0; i < websites.length; i++) {
parts = websites[i].split("|");
if (parts[1].toLowerCase() === searchTerm) {
return parts[0];
}
}
}
Mais considérez si vous avez utilisé un objet JavaScript approprié à la place:
var websites = {
Google: "www.google.com",
Yahoo: "www.yahoo.com",
Bing: "www.bing.com"
}
// Now it's much simpler:
function filterURL(websites, searchTerm) {
// key has first letter capitalized…
return websites[searchTerm.charAt(0).toUpperCase() + searchTerm.slice(1).toLowerCase()];
}
Pourquoi ne pas simplement utiliser un objet?
var websites = {
Google: 'www.google.com',
Yahoo: 'www.yahoo.com'
};
function filterURL(sites, searchTerm) {
if (sites[searchTerm]) {
return sites[searchTerm];
} else {
// What do you want to do when it can't be found?
}
}
alert(filterURL(websites, 'Google')); // alerts 'www.google.com'
Vous devriez vraiment utiliser une structure semblable à une table de hachage afin de ne pas avoir à parcourir le tableau entier à chaque fois. Quelque chose comme ça:
var websites = {
"Google": "www.google.com",
"Yahoo": "www.yahoo.com",
"Bing": "www.bing.com"
};
function filterURL(websites, searchTerm) {
if (websites[searchTerm] !== undefined)
return websites[searchTerm];
else
return null;
}
Essayez quelque chose de plus comme:
var websites = {google: 'www.google.com', yahoo: 'www.yahoo.com'};
function filterURL(websites,searchTerm)
{
return websites[searchTerm] || 'www.defaultsearchwebstirehere.com';
}
** Mettre à jour le commentaire suivant **
Construisez votre objet de sites Web comme ceci (où l'entrée est votre tableau de valeurs clés séparées par des caractères de canal):
var websites = {};
for (var i = 0; i < input.length; i++) {
var siteToSearchTerm = input[i].split('|');
websites[siteToSearchTerm[1]] = siteToSearchTerm[0];
}
Questions connexes
De nouvelles questions
function
Une fonction (également appelée procédure, méthode, sous-routine ou routine) est une portion de code destinée à exécuter une seule tâche spécifique. Utilisez cette balise pour les questions qui impliquent spécifiquement la création ou l'appel de fonctions. Pour obtenir de l'aide sur l'implémentation d'une fonction pour effectuer une tâche, utilisez plutôt [algorithme] ou une balise spécifique à la tâche.