因此,我正在尝试JS中的good ole 'FizzBuzz‘挑战。然而,我正在尝试添加它,因为我能够完成第一个挑战。对于那些不熟悉“FizzBuzz”挑战的人。最初,您希望打印数字1..100,可被3整除的数字打印单词Fizz而不是3;可被5 => Buzz整除的数字;以及可被两个=> FizzBuzz整除的数字。我要做的是创建一个接受数组的函数,并返回包含适当字符串的数组。例如:
function super_fizzbuzz(array){
var super_array = [];
for (var array=1; array<=array.length; array++)
{
if (array % 15 == 0)
super_array.push("FizzBuzz");
else if (array % 5 == 0)
super_array.push("Buzz");
else if (array % 3 == 0)
super_array.push("Fizz");
else
super_array.push(array);
}
return super_array;
}
console.log(super_fizzbuzz([3,10,15,19]));因此,理想情况下,答案应该返回["Fizz", "Buzz", "FizzBuzz", 19],但它只是返回一个空数组。我刚刚在Ruby中做了这件事,并且我能够让它工作,没有问题。尝试将我的ruby技能转化为实践JS,并让自己更熟悉它。任何建议都将不胜感激。
发布于 2015-05-18 10:08:20
您的array试图既是数组又是它的索引。一旦为array = 1,则array.length为undefined,1 <= undefined为false;循环甚至在开始之前就结束了。super_array保持其起始值[]。
重命名您的循环变量。此外,数组从0开始,而不是1,并在< array.length结束,而不是<=。
发布于 2015-05-18 10:06:50
这里:
for (var array = 1; array <= array.length; array++)通过将1赋值给函数参数,您已经覆盖了该参数的值,称为“数组”。数字没有.length属性,所以循环不会执行任何一次迭代。
如果要遍历传入的数组中的值,请使用索引变量(一个与数组参数的索引名称不同的索引变量),然后使用它来访问元素:
for (var i = 0; i < array.length; i++) {
if (array[i] % 15 == 0)
super_array.push("FizzBuzz");
// etc发布于 2015-05-18 10:07:25
在这里你可以去
function super_fizzbuzz(array){
var super_array = [];
for (var i=0; i<=array.length-1; i++)
{
if (array[i] % 15 == 0)
super_array.push("FizzBuzz");
else if (array[i] % 5 == 0)
super_array.push("Buzz");
else if (array[i] % 3 == 0)
super_array.push("Fizz");
else
super_array.push(array[i]);
}
return super_array;
}
console.log(super_fizzbuzz([3,10,15,19]));https://stackoverflow.com/questions/30294085
复制相似问题