Flutter/Dart: 根据索引或掩码从列表中删除元素

Flutter/Dart: Remove Elements from List based on index or mask

假设我有两个列表 valuesmask:

List<int> values = [2,8,3,5,1];
List<bool> mask = [true, false, true, true, false];
// desired outcome: [2,3,5]

根据掩码值过滤值的 shortest/best/most 优雅方法是什么? 例如在 JavaScript 我可以这样做:

values.filter((_, i) => mask[i]);
// yields: [2,3,5]

Dart 中有类似的东西吗?

我认为这会奏效。如果有人有其他想法,我将不胜感激:)

List.generate(values.length, (i) => i).where((i) => mask[i]).map((i) => values[i]).toList();

我会用asMap来解决这个问题,键是索引,值是原始值。

values.asMap().entries.where((e) => mask[e.key]).map((e) => e.value).toList(); ```