dart 是否可以将主列表中的列表Map到主列表中?

lnxxn5zx  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(118)

假设我有:

List<Thing> myList = …

Thing是一个包含以下内容的类:

String a;
List<String> b;
…

是否可以通过生成包含所有a和所有bList<String>来MapmyList?
我想得到一个List<String>,它的所有值都是ab
比如:

myList.map((e) => ????).toList()

目前我所做的是创建一个单独的List secondList,然后像这样循环遍历两个列表:

myList.forEach((e) {
  secondList.add(e.a);
  e.b.forEach((x) => secondList.add(x));
});

但是有点麻烦。谢谢你的建议!

fcwjkofz

fcwjkofz1#

您可以使用expand将这些数据转换为单个列表

List<String> secondList = list.expand((element) => [element.a, ...element.b]).toList();

或者,也可以使用foraddAll

myList.forEach((e) {
  secondList.add(e.a);
  secondList.addAll(e.b);
});
92dk7w1h

92dk7w1h2#

一般来说,Iterable.map通常可以替换为collection-for,在这种情况下,这会简单得多,因为它还允许您使用spread(...)运算符:

var everything = [
  for (var thing in myList)
    ...[thing.a, ...thing.b],
];

相关问题