Dartの配列をmap操作しつつindexも取得したい。

単純にforEach使ってindexを取得したい場合と、mapで配列操作しつつindexも取得したい場合のやり方メモ。


配列でforEach使ってindexを取得したい場合。

asMapを使えばよい。

class User {
  final int id;
  final String name;
  
  const User({
    required this.id,
    required this.name,
  });
}
  

List<User> users = [
  User( id: 1, name: 'yamada' ),
  User( id: 2, name: 'suzuki' ),
  User( id: 3, name: 'hogehoge')
];

void main(){
  users.asMap().forEach((index, user){
    print('index: $index, id: ${user.id}, name: ${user.name}');
  });   
}

配列でmap操作しつつindexを取得したい場合。

entriesプロパティを使う。

class User {
  final int id;
  final String name;
  
  const User({
    required this.id,
    required this.name,
  });
}
  

List<User> users = [
  User( id: 1, name: 'yamada' ),
  User( id: 2, name: 'suzuki' ),
  User( id: 3, name: 'hogehoge')
];

void main(){
  users.asMap().entries.map((entry){
    int index = entry.key;
    User user = entry.value;
    return '$index : ${user.name}${user.id}';
  }).toList().forEach((val) => print(val));
}

てか。dartpadブログに埋め込むと便利やな。。

以上