gpt4 book ai didi

JavaScript 抛出未定义的错误

转载 作者:行者123 更新时间:2023-11-30 12:54:11 24 4
gpt4 key购买 nike

它应该做什么 -示例

url1(pages,"ALT") returns "www.xyz.ac.uk" 
url1(pages,"xyz") returns ""

错误 - TypeError: Cannot call method 'toUpperCase' of undefined

这只是一些类(class)作业,我遇到了这些错误。任何帮助将不胜感激

function index(string,pattern,caseSensitive) {
if(caseSensitive == false) {
var v = string.toUpperCase();
} else {
var v = string;
}

return indexNumber = v.indexOf(pattern);
}
var pages = [ "|www.lboro.ac.uk|Loughborough University offers degree programmes and world class research.", "!www.xyz.ac.uk!An alternative University" , "%www%Yet another University"];

alert(url1(pages, "ALT"));

function url1(pages,pattern) {
var siteContent = [];
for(i=0;i<pages.length;i++) {
var seperator = pages[i].charAt(0);
if(pages[i].indexOf(seperator)>0){
siteContent = pages[i].split(pages[i].indexOf(seperator));
}
if( index(siteContent[2],pattern,false)>=0){
return siteContent[1];
}else{
return "";
}

}
}

最佳答案

    if(pages[i].indexOf(seperator)>0){
siteContent = pages[i].split(pages[i].indexOf(seperator));
}
if( index(siteContent[2],pattern,false)>=0){
return siteContent[1];
}else{
return "";
}

如果pages[i].indexOf(seperator)<=0 , siteContent仍然是上次迭代的内容。如果第一次迭代发生这种情况,siteContent还是[] , 和 siteContent[2]undefined .

另一个问题:表达式pages[i].indexOf(seperator)返回一个数字,pages[i].split需要一个定界字符串作为参数。由于数字没有出现在您的输入中,您将始终得到一个单元素数组,并且 siteContent[2]永远是undefined .摆脱 .indexOf(seperator) , 改为 siteContent = pages[i].split(seperator) .

还有一个:摆脱else { return ""; } .添加 return "";for之后循环。

最后,在第一个if声明条件,改变.indexOf(seperator) > 0.indexOf(seperator, 1) !== -1 .因为你得到 seperator从字符串的第一个字符开始,它将在 0 处找到.您想要第二次出现,所以开始搜索 1 .此外,.indexOf返回 -1如果找不到子字符串。您需要在 if 中考虑到这一点条件。

旁注,因为这不会导致您的问题:永远不要使用 == false . JS 会强制执行类似 0 的内容和 ""== false .如果那是你想要的,只需使用 !运算符,因为表达式与值无关 false .

我的最终答案是http://jsfiddle.net/QF237/

关于JavaScript 抛出未定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com