如何从数组中定位e负数,得到所有正数的总和?

Bok*_* 88 4 javascript arrays numbers

我试图找出如何在数组中定位负数.我有这个

function SummPositive( array ) {

}
SummPositive( [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10,-52 ] );
Run Code Online (Sandbox Code Playgroud)

这是一个具有负数和正数的数组.当您不知道数组中有多少负数时,如何定位数组中的所有负数?

例如,我正在尝试to...loop整个数组,找到正数,将它们存储在另一个数组中,并进行求和(1+2+3+4+5+10+23).

但我是菜鸟,我不知道怎么做.如果可能,只使用本机js

Nin*_*olz 6

您可以仅针对正数过滤数组,然后添加所有值.

var array = [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10, -52 ],
    positive = array.filter(function (a) { return a >= 0; }),
    sum = positive.reduce(function (a, b) { return a + b; });

console.log(sum);
Run Code Online (Sandbox Code Playgroud)

或者使用单个循环

var array = [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10, -52 ],
    sum = array.reduce(function (r, a) {
        return a > 0 ? r + a : r;
    }, 0);

console.log(sum);
Run Code Online (Sandbox Code Playgroud)

使用方法:

  • Array#filter:

    filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素.

  • Array#reduce:

    reduce()方法对累加器和数组的每个值(从左到右)应用函数以将其减少为单个值.


Zak*_*rki 6

只需创建一个条件来检查它是正数还是负数,然后定义一个空数组negatives,如果数字是负数,则将其推入负数数组,如果是正数,则将其添加到sum变量中,检查下面的工作示例。

function SummPositive( numbers ) {
  var negatives = [];
  var sum = 0;

  for(var i = 0; i < numbers.length; i++) {
    if(numbers[i] < 0) {
      negatives.push(numbers[i]);
    }else{
      sum += numbers[i];
    }
  }

  console.log(negatives);

  return sum;
}

var sum_result = SummPositive( [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10,-52 ] );

console.log(sum_result);
Run Code Online (Sandbox Code Playgroud)