【问题标题】:array sorting using loop and statements使用循环和语句进行数组排序
【发布时间】:2020-11-15 01:50:53
【问题描述】:

你好朋友你能修复我的代码吗像现在输入是 12 divide2 ,divide3 和 divide4 从 0 增加到 1。或者当输入是 3,2,9 divide3 得到值 2和divide2得到1...

这是我的代码

function Divider(args) {

    let n = Number(args[0]);

    let divide2 = 0.0;
    let divide3 = 0.0;
    let divide4 = 0.0;

    for (let i = 1; i < n; i++) {
        let currentNum = Number(args[i])

        if (currentNum % 2 == 0) {
            divide2++;

        }
        if (currentNum % 3 == 0) {
            divide3++;
        }
        if (currentNum % 4 == 0) {
            divide4++;
        }


    }

    console.log(divide2);
    console.log(divide3);
    console.log(divide4);


}

Divider(['1', '12']);
  

想法是将多少个数字除以 2 ,3,4 而不提醒要记录在变量中。我需要这样做。

【问题讨论】:

  • let n = Number(args[0]); 的意义何在?你的循环永远不会因为它而运行。
  • for (let i = 1; i &lt; n; i++) { 应该是for (let i = 1; i &lt;= n; i++) {

标签: javascript node.js arrays loops sorting


【解决方案1】:

几件事,

  1. Javascript 提供arguments 作为一种使用传递给函数的参数的方法,以便在其范围内作为数组使用

  2. 在调用函数时传递参数时,您不需要将参数包装在数组中。 Javascript 会自动为您执行此操作,并将其作为 arguments 提供。

  3. 在 for 循环中,您需要迭代直到 i

  4. 对于divide2、divide3 和divide4,您可以使用整数而不是浮点数。

这是修复代码后的解决方案。

 function Divider(args) {

    let n = Number(arguments[0]);

    let divide2 = 0.0;
    let divide3 = 0.0;
    let divide4 = 0.0;

    for (let i = 1; i <= n; i++) {
        let currentNum = Number(arguments[i])

        if (currentNum % 2 == 0) {
            divide2++;
        }
        if (currentNum % 3 == 0) {
            divide3++;
        }
        if (currentNum % 4 == 0) {
            divide4++;
        }
    }

    console.log(divide2);
    console.log(divide3);
    console.log(divide4);
}

Divider('3','3','2','9') // divide2 = 1.0, divide3 = 2.0, divide4 = 0.0 ;

【讨论】:

    【解决方案2】:

    这就是你想要的:

    function divider(n) {
        let divide2 = 0;
        let divide3 = 0;
        let divide4 = 0;
        for (let i = 0; i < n.length; i++) {
            let currentNum = +n[i];
            if (currentNum % 2 == 0) {
                divide2++;
            }
            if (currentNum % 3 == 0) {
                divide3++;
            }
            if (currentNum % 4 == 0) {
                divide4++;
            }
        }
        return {
            divide2,
            divide3,
            divide4
        };
    }
    
    console.log(divider(['3', '2', '9']));

    【讨论】:

      【解决方案3】:

      不确定你到底想要什么,但这是我想出的,

      let divide2 = 0.0;
      let divide3 = 0.0;
      let divide4 = 0.0;
      
      function Divider(args) {
      
           for (let i = 0; i < args.length; i++) {
              let currentNum = Number(args[i])
              
      
              if (currentNum % 2 === 0) {
                  divide2++;
              }
              
              if (currentNum % 3 === 0) {
                  divide3++;
                  
              }
              
              if (currentNum % 4 === 0) {
                  divide4++;        
             }
          }
      
      }
      
       Divider(['1', '6', '9', '12', '24']);
      
       console.log('by2', divide2);
       console.log('by3', divide3);
       console.log('by4', divide4);

      【讨论】:

      • 非常感谢先生,我读到不推荐使用 array.lenght,因为输入错误,并想尝试通过获取第一个索引 args[0] 但这样它也可以工作。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多