这是我的代码,我在返回的消息中的名字之间加了逗号
CodePen: Celebrity Name Revealer
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker () {
msg = "The name is ";
for (i=0; i<arguments.length; i++){
msg += arguments[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));
我希望它们之间有一个空格,但如果你改变了我添加的字符串中的空格,可以说一个感叹号,你会看到它只是将它附加到整个短语的末尾,这让我感到困惑好。
我已经创建了一个代码笔。
CodePen: Celebrity Name Revealer
我为此问题找到了以下解决方案:
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameRevealer (names) {
msg = "This celebrity's real name is ";
for (i=0; i<names.length; i++){
msg += names[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));
答案 0 :(得分:5)
在这种情况下,arguments
是一个数组数组(只有一个项目)。要解决此问题,请重新定义nameMaker:
var nameMaker = function(names) {
return 'The name is ' + names.join(' ');
};
此外,还有一些关于您的代码的其他反馈:
答案 1 :(得分:2)
arguments
变量是一个数组:您将数组作为第一个参数传递。发生的事情是它正在迭代arguments
数组,并在每个名人阵列上调用。toString(),这会自动添加逗号。你想要的是迭代arguments[0]
。
类似的东西:
for (var i=0; i < arguments[0].length; i++) {
msg += arguments[0][i] + " ";
}
答案 2 :(得分:1)
看看这个小提琴http://jsfiddle.net/JayKandari/xdNLj我只是简单地复制了你的小提琴。那是你想要的吗?这些名字之间的空格?
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker (names) {
msg = "The name is ";
for (i=0; i<names.length; i++){
msg += names[i] + " ";
}
document.getElementById("message").innerText = (msg);
return(msg);
}
nameMaker(MarilynMonroe);
nameMaker(WoodyAllen);
nameMaker(MegRyan);
答案 3 :(得分:0)
Javascript已经将arguments
作为数组,因此您不需要传递数组。
像这样调用你的函数。
console.log(nameMaker("Norma", "Jean", "Mortensen"));
OR
更改您的功能添加参数names
并在names
而不是arguments
上执行操作。
答案 4 :(得分:0)
添加参数变量function nameMaker (name)
然后将所有argument
更改为name
var MarilynMonroe=["Norma", "Jean", "Mortensen"];
var WoodyAllen=["Allen", "Konigsberg"];
var MegRyan=["Margaret", "Mary", "Emily", "Anne Hyra"];
function nameMaker (name) {
msg = "The name is ";
for (i=0; i<name.length; i++){
msg += name[i] + " ";
}
return(msg);
}
console.log(nameMaker(MarilynMonroe));
console.log(nameMaker(WoodyAllen));
console.log(nameMaker(MegRyan));