2017-05-03 112 views
0

我想弄清楚如何從現有的一個對象中提取一個新的數組對象根據我通過PLUS穿過的一些條件如果元素已經存在,則不復制新數組。通過給定值過濾掉對象的數組,並避免添加重複根據相同的值

所以這是對象我有:addressesObj

現在我想通過給定的郵政編碼例如過濾的對象:

` 
var PostCode = "TN37 7AJ " 
var newAddressesObj = addressesObj.filter(function (duties) { 
     return duties.Address.Postcode === PostCode 
    }); 
` 

這正常工作,它給了我回來的數組2個對象:

newAddressesObj

現在,從這個新的數組,我想用相同的P刪除記錄ostcode,所以它只給我一個對象 - 我該怎麼做?

我已經在一起使用$ .inArray與過濾試過,但我做錯了什麼,我也想這樣做,所有一氣呵成 - 這樣的事情:

var PostCode = "TN37 7AJ " var newAddressesObj = addressesObj.filter(function (duties) { return duties.Address.Postcode === PostCode && $.inArray(PostCode, addressesObj == -1 });

什麼想法?

由於

+0

使用[發現](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find?v=control),而不是'filter'。第一場比賽後,「find」停止。 – Titus

+0

哦,我明白了。您想要提取具有特定郵政編碼的所有不同對象。 – Titus

+0

我忘了在我的問題上提到一些事情......在現實中,我想從中提取2個元素,而不是一個。 這是真正的實現: var StartPCode =「TN37 7AJ」,EndPCode =「TN38 8EW」 var newAddressesObj = addressesObj.filter(function(x){ return(x.Address.StartPCode === StartPCode || x .Address.EndtPcode === EndPCode)&& $ .inArray(PCode,addressesObj == -1)); 最後我想要一個帶有2個元素的對象,裏面有差異郵政編碼,所以我可以傳遞給谷歌地圖並顯示路線基本上... 感謝您的快速回放壽 – Daniele

回答

0

添加過濾的郵政編碼到一個數組並繼續檢查郵政編碼陣列的每個元素循環。

var PostCode = "TN37 7AJ"; 
var addressesObj = [{ 
     "Address": { 
      "Postcode": "TN38 8EW", 
      "AddressLine1": "32 Head View" 
     }, 
     "Name": "Ball, Jones", 
     "ServiceDutyId": 0 
    }, 
    { 
     "Address": { 
      "Postcode": "TN37 7AJ", 
      "AddressLine1": "171 Road" 
     }, 
     "Name": "Trump, Albert", 
     "ServiceDutyId": 3259 
    }, 
    { 
     "Address": { 
      "Postcode": "BN1 5AA", 
      "AddressLine1": "171 Road" 
     }, 
     "Name": "Martin, Lucas", 
     "ServiceDutyId": 4256 
    }, 
    { 
     "Address": { 
      "Postcode": "TN37 7AJ", 
      "AddressLine1": "171 Road" 
     }, 
     "Name": "Trump Albert", 
     "ServiceDutyId": 3273 
    } 
] 

var postcodeArr = []; 

var isAbsence = function(postcode) { 
    if (postcodeArr.indexOf(postcode) == -1) { 
     postcodeArr.push(postcode); 
     return true; 
    } 

    return false; 
} 

var newAddressesObj = addressesObj.filter(function(duties) { 
    return duties.Address.Postcode === PostCode && isAbsence(duties.Address.Postcode); 
});