2013-04-03 20 views
3

我正在使用extjs。我需要根據需要從商店中檢索不同的數據。 在我的商店中包含單個列表不嵌套列表,其中包含AMERICAS,北海和東南亞等地區。這些區域自身擁有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

這部分沒有任何意義:

  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); 
4

它看起來像你想收集使用。 http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-collect

vesselStore.collect('region')

+0

Thanq。我試過vesselStore.collect('區域')。它會給獨特的地區和sburegion等..但我需要基於地區,我可以得到獨特的分區域,vesseltype和vesselname。我用json更新了我的問題。你可以看到。沒有得到如何採取。任何人都可以幫助我。如何實現? –