[英]Return Object in Array if Property Match
这是场景:
有一个名为listOfSelectedProductIds
的参数,其中包含所有选定的ID。
还有一个名为listOfAllPossibleProducts
列表,其中
包含objects
列表。 该object
包含一个ProductId
,
ProductName
和ProductCode
。 看起来像这样:
手头的任务:
listOfSelectedProductIds
。 如果ProductId
一个相匹配ProductId
从listOfAllPossibleProducts
,然后我需要返回该对象。 这是我在做什么:
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
目前正在发生什么:
currentItem
,但_.contains(...)
始终返回false。 题:
listOfAllPossibleProducts
有ProductIds
符合我的那ProductIds
在listOfSelectedProductIds
如何使用_.filter
:
var result = _.filter(listOfAllPossibleProducts, function (el) {
return _.contains(listOfSelectedProductIds, el.id);
});
或非下划线方法:
var result = listOfAllPossibleProducts.filter(function (el) {
return listOfSelectedProductIds.indexOf(el.id) > -1;
});
一次创建另一个结构productsByProductId
!
var productsByProductId = {};
listOfAllPossibleProducts.forEach(p => {
productsByProductId[p.ProductId()] = p
});
也许还有一个辅助功能
function getProductById(id){
return productsByProductId[id];
}
并使用它来将ID映射到节点
var selectedProducts = listOfSelectedProductIds.map(getProductById)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.