Javascript 仅打印负数及其和(应用于循环和数组)

Javascript 仅打印负数及其和(应用于循环和数组),javascript,arrays,for-loop,if-statement,negative-integer,Javascript,Arrays,For Loop,If Statement,Negative Integer,我需要一个程序的帮助,我必须使用一个循环来输出所有负整数及其和。我应该用最基本的方法 负整数:-2,-1,-7问题是您正在检查仅位置的Array.length-1,而它应该是Array.length-2。以下是有效的代码示例: function negativeArray(array) { document.write("Negative integers: ") for (var i = 0, count = 0; i < array.length

我需要一个程序的帮助,我必须使用一个循环来输出所有负整数及其和。我应该用最基本的方法


负整数:-2,-1,-7问题是您正在检查仅位置的Array.length-1,而它应该是Array.length-2。以下是有效的代码示例:

function negativeArray(array)
    {
        document.write("Negative integers: ")
        for (var i = 0, count = 0; i < array.length; i++) 
        {
            if (array[i] != undefined && array[i] < 0){
                    document.write(array[i]);
                    count += array[i];
                    if (i != array.length-2) {
                        document.write(", ");
                    }
            }
        }
            document.write( "<br>Sum negative nums: " + count)
    }
        var items = [1, -2, 3, 4 -5, 6, -7, 8];
        negativeArray(items);
函数negativeArray(数组)
{
document.write(“负整数:”)
for(变量i=0,计数=0;i求和负数:”+count)
}
var项目=[1,-2,3,4-5,6,-7,8];
负片(项目);

以上代码非常适合我,如果您有任何问题,请随时问我

你可以写得容易得多。首先过滤所有负数,然后求和

var items = [1, -2, 3, 4 -5, 6, -7, 8];

function negativeArray(array) {
  return array.filter(item => item < 0).reduce((sum, current) => sum + current, 0)
}
    console.log(negativeArray(items)); // -10
var项目=[1,-2,3,4-5,6,-7,8];
函数负数组(数组){
返回数组.过滤器(项=>项<0).减少((和,当前)=>和+当前,0)
}
console.log(negativeArray(items));//-10

每次循环并找到下一个负数时,您的逻辑都是:

  • 把它写下来
  • 如果写入的数字不是数组的最后一个元素,请写入“,”
  • 首先,上面的步骤2没有多大逻辑意义,因为即使数字可能不是数组的最后一个元素,它也可能是数组的最后一个负数。但现在你可能已经意识到这可能发生,否则你就不会发布这个问题了

    如果将名为
    didOutput
    的布尔标志最初设置为
    false
    表示是否输出过任何负数,那么更有意义的是什么。这是在循环之外设置的。然后,在伪代码中循环如下所示:

    didOutput = false;
    loop {
       get next negative number;
       if didOutput then {
           write(", ");
       }
       write number;
       didOutput = true;
    }
    
    这样,在每次循环迭代中,当且仅当您至少写出过一个数字时,您就在写出下一个数字之前写出逗号。您只需要对现有代码进行一两行更改,我本来可以这样做的,但这种模式会反复出现,理解起来很重要,所以您应该尝试自己将其合并到代码中。

    嘿,我可以帮您吗:)

    只需获取一个类似“first”的bool,它检查是否是第一项,并在您的编号前放置“first”。您将其设置为true,然后构建stf,如:

    If(first == true){ 
      //don t print the „ ,“
      first = false
    }else {
     // print it
    }
    

    使用
    过滤器
    连接
    减少
    的更简单方法:

    var项目=[1,-2,3,4-5,6,-7,8];
    document.write(
    “负整数:”,
    items.filter(item=>item<0).join(“,”)
    );
    document.write(
    “
    求负整数之和:”, 减少((acc,电流)=>acc+(电流<0?电流:0),0)
    );
    您的代码是用语法和1995年的方法编写的。
    document.write()
    不应该像您使用它那样用于生成结果,可以使用多种方法迭代数组,而不是
    for
    循环

    在您的情况下,最好的方法是使用该方法在原始数组上循环,这将导致第二个值数组与您建立的某些条件相匹配(在本例中为负数)。由于结果将在一个数组中,因此该方法将生成一个逗号分隔的字符串结果,您不必担心逗号的位置。然后,您可以使用

    var项目=[1,-2,3,4-5,6,-7,8];
    函数负数组(数组){
    //使用Array.filter()方法进行循环
    //在一个数组上创建一个新的数组
    //你想要的价值观
    让结果=array.filter(函数(项){
    返回项<0;
    });
    //.join()将返回以逗号分隔的数组值字符串
    document.getElementById(“否定”).textContent=results.join(“,”);
    //.reduce()将在数组上循环,并根据传递的函数返回单个值
    document.getElementById(“sum”).textContent=results.reduce(函数(x,y){return x+y});
    }
    负片播放(项目);
    
    负整数:
    
    负数之和:
    是的,但数组可以更改,如果最后一个是负数,则不起作用。我必须使用一个通过逗号和空格分隔每个数字的循环,该筛选器将everting放在一起。我必须使用一个通过逗号和空格分隔每个数字的循环,该筛选器将everting放在一起。此ald方法是requeriment@Chucho
    .join()
    方法允许您使用所需的任何分隔符,因此我已更新为,以表示逗号和空格。