如何解决如何从特定产品ID的产品列表中提取产品?
请帮助我!
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列表中提取产品。
解决方法
您需要运行两个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
,
尝试一下:
final product = products.firstWhere((p) => Id.contains(p.id));
,
您只需要遍历列表,找到匹配项并返回即可。您可以通过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,Pn3,Trousers
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。