如何从特定产品ID的产品列表中提取产品?

时间:2020-08-13 08:38:54

标签: dart

请帮助我!

    List<String> Id= ["MES9-7t73JhFzAEoL6J","MES91YJevIAthak253M"];

    List<Product> products =
          [
            Product(
              id: 'MES9-2',
              categories: 'AC1, AC2, AC3, N1, Pn1, P',
              title: 'Red Shirt',
              description: 'A red shirt - it is pretty red!',
              price: 29.99,
              imageUrl:
                'https://cdn.pixabay.com/photo/2016/10/02/22/17/red-tshirt-1710578_1280.jpg',
              ),
           Product(
             categories:' pn2, N2, N3, Pn2, Pn3',
             id: 'MES91YJevIAthak253M',
             title: 'Trousers',
             description: 'A nice pair of trousers.',
             price: 59.99,
             imageUrl:
              'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Trousers%2C_dress_%28AM_1960.022-8%29.jpg/512px-Trousers%2C_dress_%28AM_1960.022-8%29.jpg',
             ),
           ];

=>如何从产品ID与ID列表中的字符串相同的_items列表中提取产品。

3 个答案:

答案 0 :(得分:2)

您需要运行两个for循环来提取与您拥有的产品ID列表相对应的产品列表。第一个循环将根据您获得的ID的长度运行,第二个循环将根据产品的长度运行。它将在if条件中匹配两个ID,并将匹配的产品添加到 #Creating empty geojson to collect features drawn on map: feature_collection = { 'type': 'FeatureCollection', 'features': []} #Handling items drawn on map: def handle_draw(self, action, geo_json): """Do something with the GeoJSON when it's drawn on the map""" feature_collection['features'].append(geo_json) #Generate Basemap: satellite = basemap_to_tiles(basemaps.Esri.WorldImagery) osmap = basemap_to_tiles(basemaps.OpenStreetMap.Mapnik) mymap = Map(layers=(osmap, satellite), center=(55,0), zoom=5,scroll_wheel_zoom=True) #Generate controls on map: center=[55,0] #where to start on map: middle of UK marker = Marker(location=center, draggable=False) #Draw shapes on map: dc = DrawControl(marker={'shapeOptions': {'color': '#0000FF'}}, rectangle={'shapeOptions': {'color': '#0000FF'}}, circlemarker={}) dc.on_draw(handle_draw) #call function what to do with objects drawn on maps #Add all controls to the actual map: mymap.add_control(dc) #add #Generate GEOJSON which could contain data to be displayed on map: geo_json = GeoJSON(data={},style={},hover_style={}) mymap.add_layer(geo_json) #add to map object mymap 列表中。

foundProducts

答案 1 :(得分:2)

尝试一下:

final product = products.firstWhere((p) => Id.contains(p.id));

答案 2 :(得分:1)

您只需要遍历列表,找到匹配项并返回即可。您可以通过firsWhere()进行操作。

因此,您将不得不使用list iterate dart遍历Id

//you have the List<Product> we are taking the variable as products
List<Product> products = ....

// this will store the item which matches the id
var item;
Id.forEach((id){
  //now using first where
  products.firstWhere((item) => item.id == id, orElse: () => null);
});

// now printing the item and check for the nullability
print(item ?? 'No products found'); // You will get the matching the Product matching the item id

请注意: firstWhere(),给出与任何ID匹配的列表中找到的第一项。因此,您只会选择一种产品。我只想满足一个要求。

我有一个演示给您。在这里,您可以了解其工作原理

演示

class Product {
  double price;
  String id, categories, title, description, imageUrl;
  
  Product({
    this.id, 
    this.categories, 
    this.title, 
    this.description, 
    this.price, 
    this.imageUrl
  });
}

void main() {
  var result;
  List<String> id = ["MES9-7t73JhFzAEoL6J","MES91YJevIAthak253M"];
  List<Product> products = [
    Product(
      id: 'MES9-2',
      categories: 'AC1, AC2, AC3, N1, Pn1, P',
      title: 'Red Shirt',
      description: 'A red shirt - it is pretty red!',
      price: 29.99,
      imageUrl:
          'https://cdn.pixabay.com/photo/2016/10/02/22/17/red-t-shirt-1710578_1280.jpg',
    ),
    Product(
      categories:' pn2, N2, N3, Pn2, Pn3',
      id: 'MES91YJevIAthak253M',
      title: 'Trousers',
      description: 'A nice pair of trousers.',
      price: 59.99,
      imageUrl:
          'https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Trousers%2C_dress_%28AM_1960.022-8%29.jpg/512px-Trousers%2C_dress_%28AM_1960.022-8%29.jpg',
    )
  ];
  
  // Here is what we're doing the main operation
  id.forEach((id){
    result = products.firstWhere((item) => item.id == id, orElse: () => null);
  });
  
  //printing the result
  print(result ?? "No items found");
  // similary you can get the result item via result.id
  print("RESULT: ${result.id}, ${result.categories}, ${result.title}");
}

输出

Instance of 'Product' // so this is the instance of the product
RESULT: MES91YJevIAthak253M,  pn2, N2, N3, Pn2, Pn3, Trousers
相关问题