![](/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.