【发布时间】:2017-01-17 14:04:14
【问题描述】:
考虑以下代码:
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;
});
});
这让我获得了第一个对象,但没有其他任何对象。稍微好一点,但还不够。
这可能吗?我显然做错了什么!
谢谢 迈克尔
【问题讨论】:
-
使用过滤器。
const promos = promotions.filter(o => timePromotionIds.includes(o.Id));如果不支持includes,请使用indexOf。 -
Array#map返回另一个数组.. 不是元素... -
@Tushar,这应该是答案:)
-
感谢@Tushar,但现在它返回一个空数组。有任何想法吗?我需要返回匹配的这些对象的数组。
-
@Tushar - 你是完全正确的。这行得通。让我失望的是因为我得到了一个字符串数组而不是数字。即 ["255","56"]。在这个数组上使用 map 并解析为数字现在适用于您的方法。请在下面提交答案,我会将您标记为正确。谢谢!
标签: javascript arrays ecmascript-6