以下是该方案:
标题为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
pivotSheet.Activate();
Microsoft.Office.Interop.Excel.PivotTables pivotTables =
(Microsoft.Office.Interop.Excel.PivotTables)pivotSheet.PivotTables(missing);
int pivotTablesCount = pivotTables.Count;
答案 0 :(得分:4)
如何使用_.filter
:
var result = _.filter(listOfAllPossibleProducts, function (el) {
return _.contains(listOfSelectedProductIds, el.id);
});
或非下划线方法:
var result = listOfAllPossibleProducts.filter(function (el) {
return listOfSelectedProductIds.indexOf(el.id) > -1;
});
答案 1 :(得分:1)
创建另一个结构productsByProductId
一次!
var productsByProductId = {};
listOfAllPossibleProducts.forEach(p => {
productsByProductId[p.ProductId()] = p
});
也许是辅助功能
function getProductById(id){
return productsByProductId[id];
}
并使用它将id映射到节点
var selectedProducts = listOfSelectedProductIds.map(getProductById)