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"]
如何实现?
答案 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)
}