簡體   English   中英

按對象屬性循環遍歷對象數組

[英]Looping through array of objects by object property

我有一系列對象,其中包含一些有關我要觸發的流行音樂的信息。 它看起來像這樣:

[  
   {  
      "url":"www.fakeurl/redirect1",
      "providerName":"ebay",
      "retailerName":"eBay",
      "providerAndRetailer":"ebayeBay",
      "popAllowed":true
   },

   {  
      "url":"www.fakeurl/redirect2",
      "providerName":"pricerunner",
      "retailerName":"Currys",
      "providerAndRetailer":"pricerunnerCurrys",
      "popAllowed":true
   },
   {  
      "url":"www.fakeurl/redirect3",
      "providerName":"kelkoo",
      "retailerName":"Currys",
      "providerAndRetailer":"kelkooCurrys",
      "popAllowed":true
   },
   {  
      "url":"www.fakeurl/redirect4",
      "providerName":"ebay",
      "retailerName":"eBay",
      "providerAndRetailer":"ebayeBay",
      "popAllowed":true
   },
   {  
      "url":"www.fakeurl/redirect5",
      "providerName":"pricerunner",
      "retailerName":"Argos",
      "providerAndRetailer":"pricerunnerArgos",
      "popAllowed":true
   },
   {  
      "url":"www.fakeurl/redirect6",
      "providerName":"ebay",
      "retailerName":"eBay",
      "providerAndRetailer":"ebayeBay",
      "popAllowed":true
   },
   {  
      "url":"www.fakeurl/redirect7",
      "providerName":"ecn",
      "retailerName":"Argos",
      "providerAndRetailer":"ecnArgos",
      "popAllowed":true
   }
]

我還提供了一系列要觸發命令的提供程序:

let acceptedProviders = ['ebay', 'connexity', 'ecn', 'kelkoo', 'nexttag', 'pricerunner', 'shopping'];

我想按我的acceptedProviders的順序遍歷數組。 當在對象中找到與“ providerName”屬性匹配的內容時,我希望循環停止並添加“ popAllowed”屬性:false,因此可以將其從列表中過濾掉。 然后它將再次循環,仍在我接受的提供程序數組中尋找名字,如果找不到,它將移至下一個,直到列表用盡。 我已經嘗試過for循環,但是我似乎無法獲得所需的結果。 任何幫助,不勝感激。

只需遍歷數據並在每個迭代集中進行popAllowed(通過在可接受的提供程序數組中查找該提供程序)

 let acceptedProviders = ['ebay', 'connexity', 'ecn', 'kelkoo', 'nexttag', 'pricerunner', 'shopping']; let data = get_data(); data.forEach((item)=>{ item.popAllowed = acceptedProviders.indexOf(item.providerName) === -1; }); console.log(data); function get_data() { return [{ "url": "www.fakeurl/redirect1", "providerName": "ebay", "retailerName": "eBay", "providerAndRetailer": "ebayeBay", "popAllowed": true }, { "url": "www.fakeurl/redirect2", "providerName": "pricerunner", "retailerName": "Currys", "providerAndRetailer": "pricerunnerCurrys", "popAllowed": true }, { "url": "www.fakeurl/redirect3", "providerName": "kelkoo", "retailerName": "Currys", "providerAndRetailer": "kelkooCurrys", "popAllowed": true }, { "url": "www.fakeurl/redirect4", "providerName": "ebay", "retailerName": "eBay", "providerAndRetailer": "ebayeBay", "popAllowed": true }, { "url": "www.fakeurl/redirect5", "providerName": "pricerunner", "retailerName": "Argos", "providerAndRetailer": "pricerunnerArgos", "popAllowed": true }, { "url": "www.fakeurl/redirect6", "providerName": "ebay", "retailerName": "eBay", "providerAndRetailer": "ebayeBay", "popAllowed": true }, { "url": "www.fakeurl/redirect7", "providerName": "ecn", "retailerName": "Argos", "providerAndRetailer": "ecnArgos", "popAllowed": true } ]; } //console.log(data) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM