在 DART 中:如何访问 String 列表的元素 1,它是 Map 主列表元素 1 的键“respostas”的值?

Posted

技术标签:

【中文标题】在 DART 中:如何访问 String 列表的元素 1,它是 Map 主列表元素 1 的键“respostas”的值?【英文标题】:In DART: How can I access the element 1 of the list of String that is the value of the key 'respostas' of the element 1 of the main list of Map? 【发布时间】:2021-10-31 22:23:55 【问题描述】:
void main() 

  final List<Map<String, Object>> perguntas = [
       
      'texto': 'Qual é a sua cor favorita?',
      'respostas': ['Preto', 'Vermelho', 'Verde','Branco'],
      ,
        
      'texto': 'Qual é o seu animal favorito?',
      'respostas': ['Coelho', 'Cobra', 'Elefante','Leão'],
      ,  
      'texto': 'Qual é o seu instrutor favorito?',
      'respostas': ['Jacob', 'Rodrigo', 'Daniel','Leo'],
      ,
      ];

如何访问 String 列表的元素 1,它是 Map 主列表元素 1 的键 respostas 的值?

[Coelho, Cobra, Elefante, Leão] ---> 我想访问元素 1:'Elefante'

【问题讨论】:

请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。 【参考方案1】:

开启dartPad 或gist

Main function


void main() 
  final List<Map<String, Object>> perguntas = [
    
      'texto': 'Qual é a sua cor favorita?',
      'respostas': ['Preto', 'Vermelho', 'Verde', 'Branco'],
    ,
    
      'texto': 'Qual é o seu animal favorito?',
      'respostas': ['Coelho', 'Cobra', 'Elefante', 'Leão'],
    ,
    
      'texto': 'Qual é o seu instrutor favorito?',
      'respostas': ['Jacob', 'Rodrigo', 'Daniel', 'Leo'],
    ,
  ];

  int? foundValueAt;

  print(perguntas.length);

  for (int i = 0; i < perguntas.length; i++) 
    final items = perguntas[i]['respostas'] as List<String>;

    // finding where `Elefante` contains
    print(items.contains("Elefante") ? "YEs" : "NO");
    if (foundValueAt == null && items.contains("Elefante")) 
      foundValueAt = i;

      ///finding index of `Elefante` inside of list<String>
      final index = items.indexWhere((element) => element == 'Elefante');
      print("index of Elefante => $index");

      ///let's change the value
      perguntas[i]['respostas'] = items
        ..removeAt(index)
        ..add("newValue");
    
  

  print('Elefante found onMainList:  index $foundValueAt');
  print("new Value>> ");
  perguntas.forEach((e) 
    print(e.toString());
  );

结果

3
NO
YEs
index of Elefante => 2
NO
Elefante found onMainList:  index 1
new Value>> 
texto: Qual é a sua cor favorita?, respostas: [Preto, Vermelho, Verde, Branco]
texto: Qual é o seu animal favorito?, respostas: [Coelho, Cobra, Leão, newValue]
texto: Qual é o seu instrutor favorito?, respostas: [Jacob, Rodrigo, Daniel, Leo]

【讨论】:

以上是关于在 DART 中:如何访问 String 列表的元素 1,它是 Map 主列表元素 1 的键“respostas”的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 Dart 中的对象列表中的对象列表

如何在 Dart 中访问 argv / 命令行选项?

Dart - 在列表中查找重复值

如何在 Dart 中提供 Future<String> 来流式传输需要 String 的流? [复制]

如何编辑列表中的每个项目并在 dart 中创建一个新项目

如何在 Dart 中对字符串列表进行排序?