Coffeescript:在数组中查找结构条目的最佳方法

时间:2013-11-13 19:52:41

标签: javascript arrays coffeescript compare

$scope.lastentries = []
e = {'min': $scope.minFoc, 'max': $scope.maxFoc, 'pas': $scope.pas}
$scope.lastentries.push(e)

我想查找e是否已存储在数组中: 不幸的是,$ scope.lastentries中的e不起作用。 它似乎并没有关注所有领域,可能比较了一些“参考”。

当然,我可以在数组中循环并按字段比较所有结构。 但是有更简单的方法吗?类似的东西,但会比较所有的领域。

到目前为止,我正在做:

v = $scope.lastentries.filter (x) -> x.min == e.min and x.max == e.max and x.pas == e.pas
$scope.lastentries.push(e) if v.length == 0

如果某人有更“紧凑”/更好的做法,请分享。 谢谢!

2 个答案:

答案 0 :(得分:0)

我相信下划线的_.indexOf可以实现您的目标:

 _.indexOf($scope.lastentries, e)
如果包含在数组中,

将返回e的索引位置,否则返回-1

答案 1 :(得分:0)

最简单的方法是使用Underscore.js(这是非常轻量级的,所以应该没有问题,包括它)。

使用它,您可以使用它findWhere函数进行检查:

v = _.findWhere $scope.lastentries, e
$scope.lastentries.push(e)  unless v?

如果未找到匹配项,或者列表为空,则v等于undefined