Javascript 我得到了一个“答案”;对象可能为空";尝试从字符串返回字符和数字计数时出错
因此,我试图返回输入字符串中多次出现的字符和数字的计数 例如,如果我输入Javascript 我得到了一个“答案”;对象可能为空";尝试从字符串返回字符和数字计数时出错,javascript,regex,typescript,function,Javascript,Regex,Typescript,Function,因此,我试图返回输入字符串中多次出现的字符和数字的计数 例如,如果我输入“zzrrcde”,我会得到2,因为z和r的值大于1 下面是我在研究后提出的函数。我想用正则表达式代替双循环。但是,我得到以下错误:TS2531对象可能为空。有人能解释为什么会发生此错误吗?在本例中,我在返回中调用text export function duplicateCount(text: string): number { try{ return text.toLowerCase().split("&q
“zzrrcde”
,我会得到2,因为z
和r
的值大于1
下面是我在研究后提出的函数。我想用正则表达式代替双循环。但是,我得到以下错误:TS2531对象可能为空。
有人能解释为什么会发生此错误吗?在本例中,我在返回中调用text
export function duplicateCount(text: string): number {
try{ return text.toLowerCase().split("").sort().join("").match(/(.)\1+/g).length; }
catch(e){ return 0; }
}
console.log(duplicateCount("aabbcde"))
然后我通过创建一个变量var newText=text
尝试了这个示例,但仍然得到了相同的错误
export function duplicateCount(text: string): number{
var newText = text;
try{ return newText.toLowerCase().split("").sort().join("").match(/(.)\1+/g).length; }
catch(e){ return 0; }
}
console.log(duplicateCount("aabbcde"))
有人知道我做错了什么吗?我正在学习TypeScript,因此如果您能提供任何深入的解释,我将不胜感激。如果匹配项为空,您可以添加一个默认值
export function duplicateCount(text: string): number {
try {
return text.toLowerCase().split("").sort().join("").match(/(.)\1+/g)?.length || 0;
}
catch (e) {
return 0;
}
}
console.log(duplicateCount("aabbcde"))
如果匹配项为空,则可以添加默认值
export function duplicateCount(text: string): number {
try {
return text.toLowerCase().split("").sort().join("").match(/(.)\1+/g)?.length || 0;
}
catch (e) {
return 0;
}
}
console.log(duplicateCount("aabbcde"))
当全局正则表达式与字符串中的任何内容不匹配时,它将返回
null
,而不是返回空数组。例如,使用您的代码:
函数重复计数(文本){
返回text.toLowerCase().split(“”).sort().join(“”).match(/(.)\1+/g).length;
}
log(duplicateCount(“abc”)
当全局正则表达式与字符串中的任何内容都不匹配时,它将返回null
,而不是返回空数组。例如,使用您的代码:
函数重复计数(文本){
返回text.toLowerCase().split(“”).sort().join(“”).match(/(.)\1+/g).length;
}
console.log(duplicateCount(“abc”))
您真的需要试试吗
函数重复计数(文本){
如果(!text)返回0;
让matchedaray=text.toLowerCase().split(“”.sort().join(“”).match(/(.)\1+/g);
返回matchedaray?matchedaray.length:0;
}
console.log(duplicateCount(“aabbcde”))
console.log(重复计数(“abcdee”))
console.log(duplicateCount(“”)
您真的需要试试吗
函数重复计数(文本){
如果(!text)返回0;
让matchedaray=text.toLowerCase().split(“”.sort().join(“”).match(/(.)\1+/g);
返回matchedaray?matchedaray.length:0;
}
console.log(duplicateCount(“aabbcde”))
console.log(重复计数(“abcdee”))
console.log(duplicateCount(“”)
.match
可以返回null
。match
可以返回null
@certainPerformance谢谢!你能解释一下const countByChar:{[char:string]:number}={}在做什么吗?countByChar是一个新对象,它接受一个类型设置为string的字符并返回一个数字?它表示新对象的键是字符串,值是数字。例如,当前键入将禁止countByChar[char]=(countByChar[char]| |“)+“x”
,因为这将分配一个值,该值是一个需要数字的字符串。@certainPerformance谢谢!你能解释一下const countByChar:{[char:string]:number}={}在做什么吗?countByChar是一个新对象,它接受一个类型设置为string的字符并返回一个数字?它表示新对象的键是字符串,值是数字。例如,当前键入将禁止countByChar[char]=(countByChar[char]| |“)+“x”
,因为这将分配一个值,该值是一个需要数字的字符串。