0

所以我在 JS 中尝试了很好的 ole 'FizzBu​​zz' 挑战。但是,我正在尝试添加它,因为我能够完成第一个挑战。对于那些不熟悉“FizzBu​​zz”挑战的人。最初,您要打印数字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]));

所以理想情况下,答案应该 return ["Fizz", "Buzz", "FizzBuzz", 19],但它只是返回一个空数组。我只是在 Ruby 中做到了这一点,我能够让它正常工作。尝试将我的 ruby​​ 技能转化为练习 JS 并让自己更加熟悉它。任何建议将不胜感激。

4

3 回答 3

3

array试图成为一个数组和它的索引。曾经array = 1,然后array.lengthundefined,并且1 <= undefinedfalse;循环甚至在它开始之前就结束了。super_array保持在其起始值[]

重命名循环变量。此外,数组从0、 not开始1,并在< array.length、而不是结束<=

于 2015-05-18T02:08:19.957 回答
2

这里:

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-18T02:06:50.430 回答
0

干得好

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]));
于 2015-05-18T02:07:24.707 回答