我有一个整数数组
var arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0]
我想获取负数的组数,在这种情况下为2
答案 0 :(得分:2)
否定基团的数目是负数元素的数目,该负数以非负数开头,或者它们是数组的最后一个元素。
reduce()
方法,并将累加器设置为0
const groups = arr => arr.reduce((ac,a,i) => ac + (a < 0 && (!arr[i+1] || arr[i+1] >=0) ? 1 : 0 ),0)
console.log(groups([-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0]))
console.log(groups([-1,-2,-1,-2,-1,0,1,0,-1,-1]))
答案 1 :(得分:1)
如果不小于零(覆盖undefined
)并且如果值小于零,则可以添加该项目的前身的支票。
const
groups = array => array.reduce(
(s, b, i, { [i - 1]: a }) => s + (!(a < 0) && b < 0),
0
);
console.log(groups([-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0]));
console.log(groups([-1, -2, -1, -2, -1, 0, 1, 0, -1, -1]));