如何从商店获取唯一/不同的数据?
Posted
技术标签:
【中文标题】如何从商店获取唯一/不同的数据?【英文标题】:How to get unique/Distinct data from store? 【发布时间】:2013-04-03 13:06:07 【问题描述】:我正在使用 extjs。我需要根据要求从存储中检索不同的数据。 在我的商店中包含单个列表而不是嵌套列表,其中包含美洲、北海和东南亚等地区。这些区域本身具有 subRegion、vesselName 和vesselType 值。我需要根据区域检索唯一值,因为它包含许多重复记录。我已经尝试如下,但它对我不起作用。 谁能告诉我如何实现?。非常感谢。谢谢。
var vesselStore=Ext.getStore('VesselStatusReportStore');
var arr=new Array();
var obj;
vesselStore.each(function(rec,index)
obj=new Object();
if(rec.get('region')=='AMERICAS')
obj.subRegionAmerica=rec.get('subRegion');
obj.vesselNameAmerica=rec.get('vesselName');
obj.vesselTypeAmerica=rec.get('vesselType');
if(rec.get('region')=='NorthSea')
obj.subRegionNorthSea=rec.get('subRegion');
obj.vesselNameNorthSea=rec.get('vesselName');
obj.vesselTypeNorthSea=rec.get('vesselType');
if(rec.get('region')=='SE Asia')
obj.subRegionSEAsia=rec.get('subRegion');
obj.vesselNameSEAsia=rec.get('vesselName');
obj.vesselTypeSEAsia=rec.get('vesselType');
arr.push(obj);
console.log(obj);
);
json:
[
"region" : "AMERICAS",
"startDate" : null,
"subRegion" : "US",
"vesselName" : "Thoma-Sea � Hull #147",
"vesselType" : "PSV"
,
"region" : "AMERICAS",
"startDate" : null,
"subRegion" : "US",
"vesselName" : "Thoma-Sea � Hull #148",
"vesselType" : "PSV"
,
"region" : "AMERICAS",
"startDate" : null,
"subRegion" : "Mexico",
"vesselName" : "Thoma-Sea � Hull #148",
"vesselType" : "PSV"
]
【问题讨论】:
【参考方案1】:您似乎想使用收集。 http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-collect
vesselStore.collect('region')
【讨论】:
感谢您的回复。我试过vesselStore.collect('region')。它将提供独特的区域和 sburegion 等。但我需要根据区域获得独特的子区域、船只类型和船只名称。我用 json 更新了我的问题。你可以看到。没有得到如何采取。任何人都可以帮助我。如何实现?【参考方案2】:这部分没有意义:
obj=new Object();
if(rec.get('region')=='AMERICAS')
obj.subRegionAmerica=rec.get('subRegion');
obj.vesselNameAmerica=rec.get('vesselName');
obj.vesselTypeAmerica=rec.get('vesselType');
if(rec.get('region')=='NorthSea')
obj.subRegionNorthSea=rec.get('subRegion');
obj.vesselNameNorthSea=rec.get('vesselName');
obj.vesselTypeNorthSea=rec.get('vesselType');
if(rec.get('region')=='SE Asia')
obj.subRegionSEAsia=rec.get('subRegion');
obj.vesselNameSEAsia=rec.get('vesselName');
obj.vesselTypeSEAsia=rec.get('vesselType');
arr.push(obj);
您基本上是在说“无论区域是什么,将记录复制到 obj
,然后将 obj
添加到我的数组中”。
我相信您的意思更接近于这些方面:
var vesselStore=Ext.getStore('VesselStatusReportStore');
var iRegions = [];
vesselStore.each(function(rec,index)
var iRegionName = rec.get('region');
// Make sure theres a array item with the region name,
// if not create a blank array;
iRegions[ iRegionName ] = iRegions[ iRegionName ] || [];
// Add the record to its corresponding array item.
// (If you don't want the full record, you can just get the
// fields individually like you did in your code).
iRegions[ iRegionName ] = rec;
console.log( iRegions );
【讨论】:
以上是关于如何从商店获取唯一/不同的数据?的主要内容,如果未能解决你的问题,请参考以下文章