javascript - 如果属性匹配则返回数组中的对象

标签 javascript knockout.js underscore.js

这是场景:

  • 有一个名为listOfSelectedProductIds的参数,其中包含 所有选定的 ID。

  • 还有另一个标题为 listOfAllPossibleProducts 的列表,其中
    包含对象列表。该对象包含一个ProductId
    产品名称产品代码。它看起来像这样:

enter image description here

手头的任务:

  • 我需要循环遍历我的 listOfSelectedProductIds。如果 ProductIdlistOfAllPossibleProducts 中的 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;
});

DEMO

关于javascript - 如果属性匹配则返回数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35630800/

相关文章:

javascript - Knockoutjs 找不到匹配的结束评论标签

javascript - 我怎样才能更优雅地做几个 _.has 检查?

Javascript 多行字符串和意外 token ILLEGAL

javascript - 如何跟踪 Google Adwords 的点击转化?

javascript - 重置后退按钮上的表单(Safari)

javascript - knockout.js/如何响应绑定(bind)下拉列表的变化事件

javascript - UnderscoreJS——_.some() 与 _.find()

javascript - react native 构建失败

javascript - 保持 Promise 链的可读性

javascript - 解决来自 JSON 对象的循环引用