这是场景:
有一个名为
listOfSelectedProductIds
的参数,其中包含 所有选定的 ID。还有另一个标题为
listOfAllPossibleProducts
的列表,其中
包含对象
列表。该对象
包含一个ProductId
,
产品名称
和产品代码
。它看起来像这样:
手头的任务:
- 我需要循环遍历我的
listOfSelectedProductIds
。如果ProductId
与listOfAllPossibleProducts
中的ProductId
匹配,那么我需要返回该对象。
这是我正在做的事情:
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];
}
}
}
当前发生的事情:
- 我的循环正在按预期获取所选 ID,即
currentItem
,但_.contains(...)
总是返回 false。
问题:
- 查找对象的最佳方式是什么
listOfAllPossibleProducts
具有与我匹配的ProductIds
listOfSelectedProductIds
中的ProductIds
最佳答案
使用_.filter
怎么样:
var result = _.filter(listOfAllPossibleProducts, function (el) {
return _.contains(listOfSelectedProductIds, el.id);
});
或者非下划线方法:
var result = listOfAllPossibleProducts.filter(function (el) {
return listOfSelectedProductIds.indexOf(el.id) > -1;
});
关于javascript - 如果属性匹配则返回数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630800/