请帮助我!
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列表中提取产品。
答案 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