如何基于Dart中具有的相同值组合多个对象?

时间:2019-06-21 08:59:52

标签: flutter dart

class Item{
   var name;
   var productId;
   Item(this.name,this.productId);
}
class Price{
   List<String> listOfProductIds = [];
   double amount;
}

让我们说一下价格清单:

[["productid1","productid3"], 199.00], ["productid2","productid4"],299.00],...);

我有两个不同的列表。

这个:

 [["myName","productid1"],["myNamee","productid2"]]

然后,这个:

[["myName","productid3"],["myNamee","productid4"]]

例如,我想检索价格为199.00的商品。基本上我想展示["myName","productid1"]["myName","productid3"]如何实现?

2 个答案:

答案 0 :(得分:0)

据我所知,这是一个自定义用例,在Dart中仅凭一条语句就无法完成。但是,可以借助Dart中的forEach循环来实现此结果。

这是重现您上述问题的最小示例-

class Prices {
  List<String> products;
  double price;

  Prices(this.products, this.price);
}

void main() {

  List<Prices> priceList = [Prices(["productid1","productid3"], 199.00), Prices(["productid2","productid4"],299.00)];

  List<List<String>> productList1 = [["myName","productid1"],["myNamee","productid2"]];

  List<List<String>> productList2 = [["myName","productid3"],["myNamee","productid4"]];

  List<List<String>> resultList = List();

  List<String> comparatorList = priceList.singleWhere((priceObj) => priceObj.price == 199.0).products;

  productList1.forEach((product) {
    if(comparatorList.contains(product[1])) {
      resultList.add(product);
    }
  });

  productList2.forEach((product) {
    if(comparatorList.contains(product[1])) {
      resultList.add(product);
    }
  });

  print(resultList.toString());
  //Above statement prints [[myName, productid1], [myName, productid3]]

}

在上面的示例中,我们首先创建comparatorList,其中仅包含定价为199.0的那些产品的名称。

然后,我们也从两个产品列表中仅提取comparatorList中存在的那些项目。希望这会有所帮助!

答案 1 :(得分:0)

这是我为克服此问题所做的工作:

 Item tempOne,tempTwo;
 for(int i=0; i<prices.listOfProductIds.length;i++){
   for(int j=0; j<itemOne.length; j++){
     if((prices.listOfProductIds[i]) == (itemOne.productId)){
       tempOne = itemOne;
       break; 
     }
   }
  for(int j=0; j<itemTwo.length; j++){
     if((prices.listOfProductIds[i]) == (itemTwo.productId)){
       tempTwo = itemTwo;
       break; 
     }
   }
  Wrapper finalResult = new Wrapper(tempOne,tempTwo,prices[i]);
}

定义的包装器类

class Wrapper{
  Item itemOne,itemTwo;
  Price price
  Warpper(this.itemOne,this.itemTwo,this.price)
}