如何在Dart中基于对象的匹配属性来连接两个对象列表

时间:2019-07-10 06:58:30

标签: dart

如何基于onjects属性连接两个对象列表并创建新列表

例如:

我有两个班级列表

List<Product_name> name = [Product_name(1,'Product1'),Product_name(2,'Product2'),Product_name(3,'Product3')];
List<Prod_desc> desc =[Prod_desc(1,'Desc1'),Prod_desc(2,'Desc2')];

Product中的产品ID与product_name中的product_id匹配时,我需要创建product_desc类型的新列表

class Product_name{
  int product_id;
  String product_name;
  Product_name(this.product_id,this.product_name);
}

class Prod_desc{
  int product_id;
  String prod_desc;
  Prod_desc(this.product_id,this.prod_desc);
}

class Product{
  int product_id;
  String product_name;
  String prod_desc;
  Product(this.product_id,this.product_name,this.prod_desc);
}

2 个答案:

答案 0 :(得分:0)

初始化一个空列表

  List<Product> productList = [];

遍历数组中的每个元素以找出匹配的项目并将其添加到列表中

  name.forEach((item) {
    desc.forEach((productDesc) {
      if (item.product_id == productDesc.product_id) {
        productList.add(Product(
          item.product_id,
          item.product_name,
          productDesc.prod_desc,
        ));
      }
    });
  });

答案 1 :(得分:0)

考虑构建一个Map来按ID查找说明。

var descriptionsById = {for (var d in desc) d.id: d.description};
var products = [
  for (var n in names) Product(n.id, n.name, descriptionsById[n.id]),
];