上次迭代返回未定义
Last iteration returns undefined
循环遍历此字符串时,警报会打印出测试4次(正确),但最后也会打印"undefined"。如何使其不返回未定义。
这返回 - 未定义CAFE ::
alert(match("abcdef", "CAfe"));
function match(string, pattern) {
var patternUpperCase = pattern.toUpperCase();
var stringUpperCase = string.toUpperCase();
var stringConcatenate;
var answer;
for (var i = 0; i < patternUpperCase.length; i++) {
if (patternUpperCase.charAt(i) != undefined) {
if (patternUpperCase.charAt(i) >= 'A' && patternUpperCase.charAt(i) <= 'Z') {
stringConcatenate += patternUpperCase.charAt(i);
alert("test");
}
}
}
return stringConcatenate;
}
这是函数需要做的:如果模式的所有单个字母都出现在字符串中(无论顺序如何)(不区分大小写),则返回 true)
例子 match("abcdef","@C2D!")返回真值 match("abcdef","CAfe") 返回 true match("abcdef","CG") 返回假
发生错误是因为您正在将未初始化的字符串与其他字符串联系。
此行(第一次迭代):
stringConcatenate += patternUpperCase.charAt(i);
如果stringConcatenate
尚未初始化,则显示为:
stringConcatenate = "undefined" + patternUpperCase.charAt(i);
因此,请在代码中执行此操作:
var stringConcatenate = "";
访问字符串字符的小说明:
如果使用String.charAt()
方法,则返回值的测试应为:
if(somestring.charAt(x)!="")
... valid
但是,您也可以通过数组运算符 [x]
访问字符串中的偏移量。这个确实undefined
:
if(typeof somestring[x]!="undefined")
为什么不使用正则表达式函数?
alert( !/[^pattern]/.test(string) );
或者使其符合@符号:
alert( !/[^pattern]/.replace(/[^a-zA-Z]/, '').test(string) );
最后一个示例删除除 a-z(下部和大部)之外的所有内容,然后测试剩余字符串中是否有任何禁止的字符。
因为这会在发现"错误"字符时给出true
,所以用!
反转
首先将字符串连接为字符串变量。
alert(match("abcdef", "CAfe"));
function match(string, pattern) {
var patternUpperCase = pattern.toUpperCase();
var stringUpperCase = string.toUpperCase();
var stringConcatenate = '';
for (var i = 0; i < patternUpperCase.length; i++) {
if (patternUpperCase.charAt(i) != undefined) {
if (patternUpperCase.charAt(i) >= 'A' && patternUpperCase.charAt(i) <= 'Z') {
stringConcatenate += patternUpperCase.charAt(i);
console.log(stringConcatenate);
}
}
}
return stringConcatenate;
}
错误:1. 字符串连接未初始化。2. 您的代码不完整,因为它没有检查模式字母存在于"字符串"中的条件。
这应该可以解决您的问题:
function fooo(){
str = "abcdsdfef";
pattern = "d234g4f";
var patternUpperCase = pattern.toUpperCase();
var stringUpperCase = str.toUpperCase();
var stringConcatenate="";
var answer = true;
for (var i = 0; i < patternUpperCase.length; i++) {
if (patternUpperCase.charAt(i) != undefined) {
if (patternUpperCase.charAt(i) >= 'A' && patternUpperCase.charAt(i) <= 'Z') {
stringConcatenate += patternUpperCase.charAt(i);
if(stringUpperCase.indexOf(patternUpperCase.charAt(i)) == -1){
answer = false;
break;
}
}
}
}
alert(answer);
}
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- "日期“;AJAX请求返回的类型值未定义
- Regex提取URL返回数组的一部分;未定义”;
- 换行符拆分返回“”;未定义”;
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 函数jquery的未定义返回
- 为什么typeof的数组的数组的未定义值返回为“0”;未定义的“;我的条件不认为是真的
- winJS 从函数未定义返回 var
- $.get jquery 中的未定义返回
- Javascript 函数未定义返回
- 数据 ID 一直未定义返回
- 函数调用Javascritpt的未定义返回值
- 在函数中提示未定义返回.(问题)范围
- JSON字符串的未定义返回