测试空长度属性是否为空并返回字符串的方法?
2019-01-25
1432
我正在解决一个挑战,并尝试进行设置,以便在您传递字符串时,您可以确定该字符串中是否有 2 到 4 个字母参数。
我对函数的测试成功了,但是如果匹配的数组长度为 0(如果所述字符串中没有匹配的字母),则无法测量长度。我收到错误:
TypeError:无法读取 null 的属性“长度”
我尝试使用一个条件,如果长度为 null,它将返回一个字符串。没有用,我不确定是否有办法将此错误汇入条件。有什么想法吗?
TLDR:有没有办法在抛出错误之前捕获
TypeError:无法读取 null 的属性“长度”
?
function countLetters(string, letter) {
let regex = new RegExp(letter, 'g');
let matched = string.match(regex);
if (matched.length == null) {
return "There are no matching characters.";
} else {
let totalLetters = matched.length;
return (totalLetters >= 2 && totalLetters <= 4)? true : false;
}
}
countLetters('Letter', 'e');
true
countLetters('Letter', 'r');
false
countLetters('Letter', 'z');
//TypeError: Cannot read property 'length' of null
3个回答
如果(matched == null ||matched.length != 0)
Ryan Schlueter
2019-01-25
-
您可以尝试
let matches = string.match(regex) || [];
-
matched.length == null
将始终为false
,因此请尝试matched.length === 0
vsemozhebuty
2019-01-25
需要进行两项更改才能使其按您需要的方式工作:
- 未找到匹配项时处理 null
- 适当检查长度
以下是更正后的代码:
function countLetters(string, letter) {
let regex = new RegExp(letter, 'g');
let matched = string.match(regex) || [];
if (matched.length == 0) {
return "There are no matching characters.";
} else {
let totalLetters = matched.length;
return (totalLetters >= 2 && totalLetters <= 4)? true : false;
}
}
我强烈建议您适当地命名您的方法。它与返回值或其类型不一致。此外,您返回
string
或
boolean
值。应该避免这样做。无论是否找到匹配项,都返回相同类型的值。
shamanth Gowdra Shankaramurthy
2019-01-25