Dart リスト(配列)をフラット(flat)にする

Dartで、リスト(配列)の各値の演算結果を蓄積するコードを記述してます。「expand」を使用して「toList()」で再度リストに変換します。「collection.dart」の「flattened」を使用する方法も記載してます。
環境
- OS windows11 home
- Dart 2.18.1
フラット(flat)
フラット(flat)するには、要素を展開することができる「 expand 」を使用します。
リスト.expand((v) => v)
※戻りは「Iterable」なため「toList()」でリストに戻します。
実際に、使用してフラットしてみます。
void main() {
var list = [[1, 2, 3], ['aaa', 'bbb', 'ccc'], [true, false]];
print(list.expand((v) => v));
// (1, 2, 3, aaa, bbb, ccc, true, false)
print(list.expand((v) => v).runtimeType);
// ExpandIterable<List<Object>, Object>
print(list.expand((v) => v).toList());
// [1, 2, 3, aaa, bbb, ccc, true, false]
}
実行結果を見ると、フラットになっていることが確認できます。

空の配列に使用した場合は、結果は空となります。
void main() {
var list = [[], [], []];
print(list.expand((v) => v));
// ()
print(list.expand((v) => v).runtimeType);
// ExpandIterable<List<dynamic>, dynamic>
print(list.expand((v) => v).toList());
// []
}
flattened
「dart.dev」に公開されている「collection.dart」の「flattened」を使用してフラットにすることも可能です。
最新版はこちらで確認できます。「pubspec.yaml」がなければ作成して以下を追加して使用します。
name: sample
dependencies:
collection: ^1.17.0
environment:
sdk: '>=2.10.0 <3.0.0'
実行します。
import 'package:collection/collection.dart';
void main() {
var list = [[1, 2, 3], ['aaa', 'bbb', 'ccc'], [true, false]];
print(list.flattened);
// (1, 2, 3, aaa, bbb, ccc, true, false)
print(list.flattened.runtimeType);
// _SyncStarIterable<Object>
print(list.flattened.toList());
// [1, 2, 3, aaa, bbb, ccc, true, false]
}
フラットになっていることが確認できます。
-
前の記事
draw.io キャンバスが収まるように表示を変えるショートカットキー 2022.11.10
-
次の記事
Redis 最小値と最大値を指定してスコアのメンバーを降順で取得する 2022.11.10
コメントを書く