如何让Underscore的地图只根据条件返回。

问题描述 投票:3回答:5

我目前有以下内容。

flatArray = _.map(items, function(x){ return x.count; });

这将返回一个数组,就像这样。

[6,6,3,0,0,0,1,0]

我怎么能只得到项目的数量,其中count是Gt 0。 在这种情况下,我怎么能只得到数字4。

我使用的是下划线和jQuery。

javascript underscore.js
5个回答
2
投票

你可以做一个_.reduce来得到一个项数> 0。

_.reduce(items, function(m,x) { return m + (x > 0 ? 1: 0); });


1
投票

可能不是最好的方法,但是...

var flatArray = [];
_.each(items, function(x)
{
    if (x > 0) flatArray.push(x);
});

console.log(flatArray) // prints [6,6,3,1]

1
投票

您可以使用 filter():

例子: 文件:

var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });

这里 evens 将是一个偶数数组(num % 2 == 0 )

对于你的情况,以获得所需的计数。

var count = _.map(items, function(x){ return x.count; })
               .filter(function(i) { return i > 0; })
               .length;

1
投票
var cnt = _.map(items, function(x){ return x.count; })
           .filter(function(i) { return i > 0; })
           .length;

JSFiddle: http:/jsfiddle.netcwF4X1


1
投票

有几种方法可以做到这一点--这里有两种。

var cnt = _.filter(items, function(x) { return x.count > 0; }).length;

var cnt = _.reduce(items, function(count, item) { return count + (item.count > 0 ? 1 : 0); }, 0); 
© www.soinside.com 2019 - 2024. All rights reserved.