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

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

当然,我可以在数组内循环并逐个字段比较所有结构。但是有没有更简单的方法?类似 in 但会比较所有字段。

到目前为止,我正在做:

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

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

4

2 回答 2

0

我相信下划线的 _.indexOf 会完成你正在寻找的东西:

 _.indexOf($scope.lastentries, e)

如果包含在数组中,则返回 e 的索引位置,否则返回 -1

于 2013-11-13T20:41:24.447 回答
0

最简单的方法是使用Underscore.js(它真的很轻量,所以包含它应该没有问题)。

使用它,您可以检查使用它的findWhere功能:

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

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

于 2013-11-13T20:42:28.750 回答