![](/img/trans.png)
[英]Trying to make a function which squares all values in an array. Getting strange number on the last value
[英]Trying to create a function which extracts a URL from an array. JavaScript
因此,基本上我想創建一個函數,當收到警報時,該函數從數組返回URL(在這種情況下,該數組被聲明為“網站”)。 該函數具有兩個參數“網站”和“ searchTerm”。
我正在努力使該功能起作用,以便當我在該功能的searchTerm參數中鍵入yahoo或google或bing時; 我希望它返回相應的URL。
任何幫助或支持,將不勝感激。 抱歉,如果我在解釋中沒有明確表示自己,如果是這種情況,請告訴我,我將盡力使自己的解釋更加清楚。
提前致謝!
嘗試更多類似的方法:
var websites = {google: 'www.google.com', yahoo: 'www.yahoo.com'};
function filterURL(websites,searchTerm)
{
return websites[searchTerm] || 'www.defaultsearchwebstirehere.com';
}
**根據評論更新**
像這樣構建您的網站對象(其中輸入是您的鍵值數組,以豎線字符分隔):
var websites = {};
for (var i = 0; i < input.length; i++) {
var siteToSearchTerm = input[i].split('|');
websites[siteToSearchTerm[1]] = siteToSearchTerm[0];
}
方法如下:
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];
}
}
}
您還可以驗證和改進功能:
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;
}
為什么不只使用一個對象?
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'
您實際上應該使用類似散列表的結構,這樣就不必每次都遍歷整個數組。 像這樣:
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;
}
我不確定為什么要為此使用數組,因為您真正在做的事情更適合鍵值對。 但是,這是我的處理方式:
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];
}
}
}
但是請考慮是否使用了正確的JavaScript對象:
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()];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.