我试图创建一个代码,将字符串“way”添加到以元音开头的单词中,或者在字符串末尾添加单词“ay”和单词的第一个字母。一个辅音。我把这些单词分成两部分来查看是否以辅音或元音开头,然后用第一个字母添加“way”或“ay”,最后加入数组以显示结果字符串。问题是连接只适用于以元音开头的单词。我该如何解决这个问题?
代码:
function isVowel(c) {
return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1;
}
function translatePigLatin(str) {
str=str.split('');
var firstLetter=str[0];
if(isVowel(firstLetter)) str.push("way");
else {
str.splice(0,1);
str=str+firstLetter+"ay";
}
str= Array.prototype.join.call(str,"");
alert(str);
return str;
}
translatePigLatin("consonant");
答案 0 :(得分:1)
您正在向数组中添加运算符+
,这可能会破坏类型,将数组转换为字符串。您应该在数组上使用push
来获取您所寻求的行为。
function isVowel(c) {
return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1;
}
function translatePigLatin(str) {
str=str.split('');
var firstLetter=str[0];
if(isVowel(firstLetter)){
str.push("way");
}else {
str.splice(0,1);
str.push(firstLetter+"ay");
}
str= Array.prototype.join.call(str,"");
alert(str);
return str;
}
translatePigLatin("consonant");
答案 1 :(得分:0)
问题是您在数组上使用字符串连接,因此结果不是.join()
可以使用的结果。相反,您需要.push()
进入数组,然后.join()
整个事情。
function isVowel(c) {
return ['a', 'e', 'i', 'o', 'u'].indexOf(c.toLowerCase()) !== -1;
}
function translatePigLatin(str) {
str = str.split('');
var firstLetter = str[0];
if(isVowel(firstLetter)) {
str.push("way")
} else {
str.splice(0,1);
str.push('ay')
}
alert(str.join(''));
return str.join('');
}
translatePigLatin("consonant");
答案 2 :(得分:0)
您可以使用RegEx执行类似的操作,如示例所示。
function Translate(inputWord) {
if (/^[aeiou]/i.test(inputWord)) {
return inputWord + "way";
} else {
return inputWord + inputWord.charAt(0) + "ay";
}
}
console.log(Translate("consonant"));
console.log(Translate("apple"));