我有一个由字符串组成的数组。我已经创建了一个基于搜索项参数搜索数组的函数。但是,当我运行代码时,它只会在数组的索引0处输出字符串。我希望它在运行搜索时返回数组中的相应url。
非常感谢任何帮助。提前致谢。
答案 0 :(得分:1)
所以你试图在〜之后根据字符串返回URL?
行
arrayOfURL[i].toLowerCase().split('~')[i];
你觉得好奇吗?想象一下,当我增加时,例如。 i = 4
arrayOfURL[4].toLowerCase().split('~')[4];
最后[4]有意义吗? 我猜测它从未超越第一个元素的原因是因为代码实际上错误地出现在那一部分上。
我认为你想要的是(同样对于回归线,你需要[0]
arrayOfURL[i].toLowerCase().split('~')[1];
我也会看看
if (z >= searchtoLower)
你想在那里比较什么?
答案 1 :(得分:1)
问题可能出在第二个问题:
var z = arrayOfURL[i].toLowerCase().split('~')[i];
该字符串将分为两部分(索引0,1)。为什么选择 i ?
部分答案 2 :(得分:0)
我认为你应该这样做
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 "~"
和
return terms[0]; //terms[0] is the part before the first "~"
我还会考虑在失败的情况下返回null
或空字符串""
(而不是返回arbritrary "Nothing Found!"
消息)
答案 3 :(得分: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")
我希望它可以帮到你。