Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 尝试创建从数组中提取URL的函数。JavaScript_Function_Javascript - Fatal编程技术网

Function 尝试创建从数组中提取URL的函数。JavaScript

Function 尝试创建从数组中提取URL的函数。JavaScript,function,javascript,Function,Javascript,因此,基本上我想创建一个函数,当发出警报时,该函数从数组返回URL(在本例中,数组被声明为“网站”)。该函数有两个参数“websites”和“searchTerm” 我正在努力使函数正常运行,因此当我在函数的searchTerm参数中键入yahoo、google或bing时;我希望它返回相应的URL 任何帮助或支持都将不胜感激。 对不起,如果我没有在我的解释中说清楚,如果是这样的话,请让我知道,我会尽量在我的解释中说得更清楚 提前谢谢 为什么不直接使用对象 var websites = {

因此,基本上我想创建一个函数,当发出警报时,该函数从数组返回URL(在本例中,数组被声明为“网站”)。该函数有两个参数“websites”和“searchTerm”

我正在努力使函数正常运行,因此当我在函数的searchTerm参数中键入yahoo、google或bing时;我希望它返回相应的URL

任何帮助或支持都将不胜感激。 对不起,如果我没有在我的解释中说清楚,如果是这样的话,请让我知道,我会尽量在我的解释中说得更清楚


提前谢谢

为什么不直接使用对象

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'
};

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 = ["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];
      }
   }
}
var网站=[“www.google.com | google”、“www.yahoo.com | yahoo”、“www.bing.com | bing”];
功能过滤器URL(网站、搜索术语)
{
对于(var i=0;i
您还可以验证和改进功能:

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;
}
功能过滤器URL(网站、搜索术语)
{
如果(网站类型!=“Array”| |!searchTerm)返回false;
对于(var i=0;i
以下是如何:

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];
      }
   }
}
var网站=[“www.google.com | google”、“www.yahoo.com | yahoo”、“www.bing.com | bing”];
功能过滤器URL(网站、搜索术语)
{
对于(var i=0;i
您还可以验证和改进功能:

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;
}
功能过滤器URL(网站、搜索术语)
{
如果(网站类型!=“Array”| |!searchTerm)返回false;
对于(var i=0;i
尝试类似以下内容:

var websites = {google: 'www.google.com', yahoo: 'www.yahoo.com'};
function filterURL(websites,searchTerm) 
{
    return websites[searchTerm] || 'www.defaultsearchwebstirehere.com';
}
**更新以下评论**

像这样构建您的网站对象(其中输入是由管道字符分隔的键值数组):

var网站={};
对于(变量i=0;i

}

尝试类似以下内容:

var websites = {google: 'www.google.com', yahoo: 'www.yahoo.com'};
function filterURL(websites,searchTerm) 
{
    return websites[searchTerm] || 'www.defaultsearchwebstirehere.com';
}
**更新以下评论**

像这样构建您的网站对象(其中输入是由管道字符分隔的键值数组):

var网站={};
对于(变量i=0;i

}

您真的应该使用类似哈希表的结构,这样就不必每次都搜索整个数组。大概是这样的:

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;
}

您实际上应该使用类似哈希表的结构,这样就不必每次都搜索整个数组。大概是这样的:

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];
        }
    }
}

我不知道为什么要使用数组来实现这一点,因为您真正做的事情更适合键值对;然而,我会这样做:

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];
        }
    }
}

你是怎么尝试的?一个基本的算法可以是:在数组上循环,查找|,分割字符串,检查searchterm是否匹配。展示解决问题的尝试将在获得答案方面帮助您很多。您可以使用jQuery吗?如果是,有一个grep函数可以满足您的需要@克莱斯特-首先,谢谢你的回答。我遇到的问题是如何组织和组织代码。你的解释听起来和我想做的差不多,只是我确定需要如何组织。@RezaSanaie-嗨,谢谢你的帮助。我将无法使用jQuery…您是如何尝试的?一个基本的算法可以是:在数组上循环,查找|,分割字符串,检查searchterm是否匹配。展示解决问题的尝试将在获得答案方面帮助您很多。您可以使用jQuery吗?如果是,有一个grep函数可以满足您的需要@克莱斯特-首先,谢谢你的回答。我遇到的问题是如何组织和组织代码。你的解释听起来和我想做的差不多,只是我确定需要如何组织。@RezaSanaie-嗨,谢谢你的帮助。我将无法使用jQuery。。。