我只是进入javascript回调,试图实现一个简单的元音计数功能。这就是我所拥有的,但是我无法弄清楚此回调在语法上有什么问题。我敢肯定这是一个非常明显的错误,但是如果有人能启发我,那就太好了。
function isitVowel(letter){
return letter in ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
}
function countVowels(line){
return line.split(",").filter(isitVowel).length;
}
countVowels("a,b,c,d,e");
答案 0 :(得分:4)
我认为您没有正确使用the in
operator。看起来更像您要使用check if the value is in the array的the includes
function:
function isitVowel(letter){
return ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'].includes(letter);
}
注意:检查浏览器的兼容性。您可能需要包括IE的polyfill。
还请注意:这实际上不是您正在使用的“回调”。您只是将一个函数引用作为参数传递给另一个函数。 “回调”是完成异步操作后传递使用的函数。
答案 1 :(得分:1)
您的问题是基于对in
的误解。 in
在对象内寻找键,而不是数组中的值。
相反,您需要使用Array.prototype.includes()
,或者,对于较旧的浏览器支持,请使用Array.prototype.indexOf()
。
return myarray.includes(letter);
或
return myarray.indexOf(letter) != -1; //-1 means not found
...其中myarray
是您的字母数组。
答案 2 :(得分:0)
您检查字母是否在数组内不起作用,回调应该没问题。 您可以使用
return ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'].includes(letter)
代替
答案 3 :(得分:0)
Map()
以下演示使用:
df.loc[:,'A'] = ((df['A'] * df['B']) + (df['C'] * df['D'])) / (df['B'] + df['D'])
存储元音
.split('')
将字符串输入分成字母数组。
.forEach()
遍历输入字符串。
Array.from()
用于将Map()
转换为2D数组。
Map()