Function 难以拆分数组并从数组中返回值;Javascript

Function 难以拆分数组并从数组中返回值;Javascript,function,javascript,Function,Javascript,我得到了一个由字符串组成的数组。我已经做了一个函数,它根据search term参数搜索数组。但是,当我运行代码时,它只输出数组索引0处的字符串。我希望它在运行搜索时返回数组中相应的url 任何帮助都将不胜感激。提前谢谢 我认为你应该 var terms = arrayOfURL[i].toLowerCase().split('~'); if(0 <= terms[1].indexOf(searchToLower)) // ^ ^ //

我得到了一个由字符串组成的数组。我已经做了一个函数,它根据search term参数搜索数组。但是,当我运行代码时,它只输出数组索引0处的字符串。我希望它在运行搜索时返回数组中相应的url


任何帮助都将不胜感激。提前谢谢

我认为你应该

var terms = arrayOfURL[i].toLowerCase().split('~');

if(0 <= terms[1].indexOf(searchToLower))
           // ^    ^ 
           // |    |-- 0 <= indexOf method determines
           // |        if searchToLower is a substring of terms[1] 
           // |               
           // |-- term[1] gets the part after the first "~"

我也会考虑返回“代码> null <代码>或空字符串<代码>”<代码>失败的情况(而不是返回ARBRITRALY代码>“没有发现”,<代码>消息>

< P>。p> 排队

arrayOfURL[i].toLowerCase().split('~')[i];
你觉得奇怪吗?想象一下当i增大时,例如i=4

 arrayOfURL[4].toLowerCase().split('~')[4];
这样持续下去有意义吗? 我猜它没有通过第一个元素的原因是因为代码在那个部分出现了错误

我认为您需要的是(同样,对于回程线,您需要[0]

 arrayOfURL[i].toLowerCase().split('~')[1];
我也会看一看

if (z >= searchtoLower) 

您试图比较的是什么?

问题可能在第二个i参数中:

var z = arrayOfURL[i].toLowerCase().split('~')[i];  

字符串将被分成两部分(索引0,1)。为什么选择部分i

这是您的程序的正确版本:

var arrayOfURL = [
                 "http://www.google.co.uk~Google is a search engine.",
                 "http://www.yahoo.co.uk~Yahoo is another search engine.",
                 "http://bing.com~Bing is a decision engine."
                 ];

function findURL(arrayOfURL,search)
{   
    var searchtoLower = search.toLowerCase();
    for (var i = 0; i < arrayOfURL.length; i++)
    {     
        var z = arrayOfURL[i].toLowerCase().split('~')[1]; 
        if (z.indexOf(searchtoLower) != -1)
            return arrayOfURL[i];
    }

     return "Nothing Found!";
}


findURL(arrayOfURL,"decision")
var arrayOfURL=[
"http://www.google.co.uk~Google是一个搜索引擎。”,
"http://www.yahoo.co.uk~Yahoo是另一个搜索引擎。”,
"http://bing.com~Bing是一个决策引擎。”
];
函数findURL(arrayOfURL,search)
{   
var searchtoLower=search.toLowerCase();
对于(变量i=0;i

我希望它能帮助您。

嘿,谢谢,但它似乎仍然无法从数组中返回正确的字符串?是的,我正在尝试根据调用函数时搜索参数中的内容返回url。我不确定原因[4],当然数组中没有4的索引?它似乎仍然没有输出正确的url?还有其他提示吗?谢谢您的时间![4]是一个示例,说明了代码将如何分解。当您想要获取搜索词(字符串的第二部分)时,您需要[1]才能返回url(字符串的第一部分)您将需要[0]
var arrayOfURL = [
                 "http://www.google.co.uk~Google is a search engine.",
                 "http://www.yahoo.co.uk~Yahoo is another search engine.",
                 "http://bing.com~Bing is a decision engine."
                 ];

function findURL(arrayOfURL,search)
{   
    var searchtoLower = search.toLowerCase();
    for (var i = 0; i < arrayOfURL.length; i++)
    {     
        var z = arrayOfURL[i].toLowerCase().split('~')[1]; 
        if (z.indexOf(searchtoLower) != -1)
            return arrayOfURL[i];
    }

     return "Nothing Found!";
}


findURL(arrayOfURL,"decision")