使用带有ID数组的JavaScript es6 Array.find()

时间:2016-09-09 12:09:01

标签: javascript arrays ecmascript-6

请考虑以下代码:

const promotions = [{ Id: 14 }, { Id: 255 }, { Id: 23 }, { Id: 56 }]; 
const timePromotionIds = [255,56];

const promos = promotions.find(promotion => {
      return promotion.Id === timePromotionIds.map(timePromotionId => {
        return timePromotionId;
      });
    });

我想在促销中返回与timePromotionIds数组中的ID匹配的对象。

我也试过了:

const promos = promotions.find(promotion => {
      return timePromotionIds.map(timePromotionId => {
        return promotion.Id === timePromotionId;
      });
    });

哪个让我成为第一个对象,而不是任何其他对象。有点好但不太好。

这可能吗?我显然做错了什么!

由于 迈克尔

1 个答案:

答案 0 :(得分:0)

您可以使用filter方法过滤出来自timePromotionIds数组的contains内容的对象。

const promotions = [{ Id: 14 }, { Id: 255 }, { Id: 23 }, { Id: 56 }]; 
const timePromotionIds = [255,56];

const promos = promotions.filter((promo) => {  
  return timePromotionIds.includes(promo.Id); 
});

console.log(promos);

结果:

[Object { Id=255}, Object { Id=56}]

请注意,因为filter会返回您在调用contains方法后返回元素的过滤元素。