You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ID匹配字符串数组元素的对象转移至另一列表?

筛选List中ID匹配数组元素的对象

我已将获取的数据转换为List<DataDependantListModel>类型的listModel,现有字符串数组visaFamilyId,需要将listModel中id与数组元素匹配的对象筛选至另一列表,但条件逻辑未生效。

相关代码

DataDependantListModel类

class DataDependantListModel {
  String? id;
  String? name;

  DataDependantListModel({this.id, this.name});

  DataDependantListModel.fromJson(Map<String, dynamic> json) {
    id = json['Id'];
    name = json['Name'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    data['Id'] = id;
    data['Name'] = name;
    return data;
  }
}

调试打印代码

debugPrint("visafamilyId : " + visaFamilyId.toString());
debugPrint("visa family contain : " + visaFamilyId.contains("6").toString());

截图信息

  • 第一张截图显示:visaFamilyId打印结果为["6"],visaFamilyId.contains("6")返回true
  • 第二张截图显示:listModel中对象的id字段值为6(数字类型,无引号)

问题分析与解决方法

最可能的原因是类型不匹配:visaFamilyId中的元素是字符串类型(如"6"),但listModel中对象的id实际是数字类型(如6),直接用contains判断会因类型不同返回false。

解决方式二选一:

  1. 解析时统一类型
    修改fromJson方法,将id强制转为字符串,确保类型一致:

    DataDependantListModel.fromJson(Map<String, dynamic> json) {
      id = json['Id'].toString(); // 把JSON中的Id转为字符串
      name = json['Name'];
    }
    
  2. 筛选时兼容类型
    在筛选逻辑中,将model.id转为字符串后再判断是否在数组中,同时处理id为空的情况:

    List<DataDependantListModel> filteredList = listModel.where((model) {
      if (model.id == null) return false;
      return visaFamilyId.contains(model.id.toString());
    }).toList();
    

内容的提问来源于stack exchange,提问作者Samet Demirtop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:10:31