在 JavaScript 数组上,有some
方法:
some()
方法测试数组中是否至少有一个元素通过了所提供函数实现的测试。它返回一个布尔值。
我认为 Dart 列表中也一定有类似的方法,但我似乎在互联网或List
文档中找不到它。
我习惯了 Dart 对某些方法有不同的名称,所以我总是花 5 分钟,直到我记得 JavaScript 的find
叫做where
,等等。但是,我似乎找不到some
的等价物。
呵呵!问题在于,JavaScript 的some
方法的等效项是Iterable
类上的方法,而不是List
上的方法。不过,List
类实现了Iterable
,所以我本可以更早地找到它,但我想我在所有这些方法描述中迷失了方向。
Dart 等价于some
方法称为:any
:
Iterable<E>
bool any(bool test(E element))
检查此可迭代对象的任何元素是否满足
test
。按迭代顺序检查每个元素,如果其中任何一个元素使测试返回 true,则返回 true,否则返回 false。
用法示例:
// The list in which we want to check if there is an item that passes a certain test.
List<String> haystack = [
// It contains some elements...
];
// Just to be explicit in this example, you don't really need it
typedef TestFunc = bool Function(String);
// The test. Just some function that takes an element and returns boolean.
TestFunc isNeedle = (String v) => v.toLowerCase().contains('needle');
bool gotNeedle = haystack.any(isNeedle);