Javascript TypeError:mainArr.join不是函数
Javascript TypeError:mainArr.join不是函数,javascript,arrays,string,join,Javascript,Arrays,String,Join,mainArr.join()。上面说 TypeError:mainArr.join不是函数 但是在这种情况下,它不应该在if块中也工作 translatePigLatin("california"); function translatePigLatin(str) { var mainArr = str.split(""); if (mainArr[0] == "a" || mainArr[0] == "e" || mainArr[0] == "i" || mainA
mainArr.join()。上面说
TypeError:mainArr.join不是函数
但是在这种情况下,它不应该在if块中也工作
translatePigLatin("california");
function translatePigLatin(str) {
var mainArr = str.split("");
if (mainArr[0] == "a" || mainArr[0] == "e" || mainArr[0] == "i" || mainArr[0] == "o" || mainArr[0] == "u") {
str = mainArr.join("");
str = str + "way";
} else {
var count = 0;
var len = mainArr.length;
for (i = 0; i < mainArr.length; i++) {
if (mainArr[i] != "a" && mainArr[i] != "e" && mainArr[i] != "i" && mainArr[i] != "o" && mainArr[i] != "u") {
mainArr = mainArr.push(mainArr[0]);
count++;
} else {
i = mainArr.length;
}
}
var mainStr = mainArr.join();
mainStr = mainStr.substr(count - 1, len);
mainStr = mainStr + "ay";
str = mainStr;
}
return str;
}
翻译拉丁语(“加利福尼亚”);
功能翻译表位拉丁语(str){
var mainArr=str.split(“”);
如果(mainArr[0]=“a”| | mainArr[0]=“e”| | mainArr[0]=“i”| | mainArr[0]=“o”| | mainArr[0]=“u”){
str=mainArr.join(“”);
str=str+“方式”;
}否则{
var计数=0;
var len=主长度;
对于(i=0;i
因此错误在于,在推送的结果之后,您将分配回mainArr,这在这里是错误的mainArr=mainArr.push(mainArr[0])代码>asmainArr.push(mainArr[0])代码>返回数组的新长度
除此之外,您还可以通过使用break来改进逻辑,而不是在else部分中将迭代器设置为数组长度
console.log(翻译为拉丁语(“california”);
功能翻译表位拉丁语(str){
var mainArr=str.split(“”);
如果(mainArr[0]=“a”| | mainArr[0]=“e”| | mainArr[0]=“i”| | mainArr[0]=“o”| | mainArr[0]=“u”){
str=mainArr.join(“”);
str=str+“方式”;
}否则{
var计数=0;
var len=主长度;
对于(i=0;i }
mainArr=mainArr.push(mainArr[0]);嘿,谢谢你的帮助,但我有一个疑问,为什么将push的结果分配给mainArr是错误的?因为它在推送一个元素后重新计算数组的长度,因此你的数组将不再是一个数组concat()
返回一个新数组,它将与mainArr=mainArr.concat(mainArr[0])一起工作代码>但是这不是必需的,因为mainArr.push()将为您完成此工作