Join()方法只将一些数组转换为字符串

时间:2016-11-12 19:30:06

标签: javascript

我试图创建一个代码,将字符串“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"); 

3 个答案:

答案 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"));