[英]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.