首页 > 解决方案 > 使用循环和语句进行数组排序

问题描述

你好朋友你能修复我的代码,就像现在输入是 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 而没有提醒要记录在变量中。我需要这样做。

标签: javascriptnode.jsarraysloopssorting

解决方案


有几件事,

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

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

  3. 在 for 循环中,您需要迭代直到 i <= n 而不是 for i < n。如果在索引 1 处只有一个数字传递,则循环不会执行。

  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 ;

推荐阅读