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
您可以仅针对正数过滤数组,然后添加所有值.
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)
使用方法:
该
filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素.
该
reduce()方法对累加器和数组的每个值(从左到右)应用函数以将其减少为单个值.
只需创建一个条件来检查它是正数还是负数,然后定义一个空数组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)