Javascript 按对象属性在对象数组中循环

Javascript 按对象属性在对象数组中循环,javascript,arrays,object,Javascript,Arrays,Object,我有一个对象数组,其中包含一些关于我试图发射的pop的信息。看起来是这样的: [ { "url":"www.fakeurl/redirect1", "providerName":"ebay", "retailerName":"eBay", "providerAndRetailer":"ebayeBay", "popAllowed":true }, { "url":"www.fakeurl/re

我有一个对象数组,其中包含一些关于我试图发射的pop的信息。看起来是这样的:

[  
   {  
      "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,这样我就可以将其从列表中筛选出来。然后它会再次循环,仍然在我的accepted providers数组中寻找第一个名字,如果找不到它,它会移动到下一个,直到列表用尽为止。我尝试了一个for循环,但是我似乎无法得到我想要的结果。非常感谢任何帮助。

只需在每个迭代集中循环数据,并在accepted providers数组中查找该提供程序即可

let acceptedProviders=['ebay'、'connexity'、'ecn'、'kelkoo'、'nexttag'、'pricelunner'、'shopping'];
让数据=获取_数据();
data.forEach((项目)=>{
item.popAllowed=acceptedProviders.indexOf(item.providerName)==-1;
});
控制台日志(数据);
函数get_data(){
返回[{
“url”:“www.fakeurl/redirect1”,
“提供商名称”:“易趣”,
“零售名称”:“易趣”,
“providerAndRetailer”:“ebayeBay”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect2”,
“providerName”:“pricerunner”,
“零售名称”:“咖喱”,
“providerAndRetailer”:“PriceRunnerCurry”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect3”,
“providerName”:“kelkoo”,
“零售名称”:“咖喱”,
“providerAndRetailer”:“Kelkoocurry”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect4”,
“提供商名称”:“易趣”,
“零售名称”:“易趣”,
“providerAndRetailer”:“ebayeBay”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect5”,
“providerName”:“pricerunner”,
“零售名称”:“Argos”,
“providerAndRetailer”:“PriceRunneArgos”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect6”,
“提供商名称”:“易趣”,
“零售名称”:“易趣”,
“providerAndRetailer”:“ebayeBay”,
“popAllowed”:真
},
{
“url”:“www.fakeurl/redirect7”,
“providerName”:“ecn”,
“零售名称”:“Argos”,
“providerAndRetailer”:“ecnArgos”,
“popAllowed”:真
}
];
}

//console.log(data)
输出是什么样子的?我试图避免对对象数组重新排序,因为这是更大的事情的一部分,在配置中设置了“order属性”,我在JS中选择它,并按照配置指定执行链接弹出。因此,如果将其设置为“blaster”,我将执行上述操作,并耗尽第一个提供程序链接,直到没有更多链接,然后移动到第二个等。但如果设置为“roundRobin”,我将使用第一个提供程序的第一个结果,然后使用第二个提供程序的第一个结果等。这就是为什么我使用popAllowed:false,过滤&然后循环拾取而不重新排序数组。您的描述很难理解预期结果。您只想返回为提供程序找到的第一个实例的数组?结果需要排序吗?同样,如果没有给出一些上下文,我也不知道
blaster
roundRobin
是什么意思,或者甚至不知道这个
config
用于什么目的,我将尝试更好地解释,但必须在多个注释中进行拆分。因此,网站的后端将通过一个变量传递到我可以在JS中获取的页面。它将指定“爆炸机”或“循环”。Blaster的意思是,在转移到任何其他提供商的链接之前,请使用您拥有的第一个提供商的所有链接(对于我们接受的提供商,请使用易趣)。所以它会做ebayLink,ebayLink,ebayLink,当没有更多的时候,connexityLink,connexityLink等等。循环使用会做不同的事情。它将从ebay获取第一个链接,然后从connexity获取第一个链接,然后从ECN获取第一个链接等,因此它将像ebayLink、connexityLink、ECNLink一样,然后它将再次使用它们的下一个链接ebaySecondLink、connexitySecondLink、ECNsecondLink出于这个原因,我尝试不更改数组的顺序,但只需通过添加popAllowed:false来过滤掉。我想在左边的对象上循环,每次都寻找正确的提供者。希望这能解释得更清楚些?很抱歉,描述混乱!