我有一个包含> 1000个对象的数组,每个对象都有一个嵌套数组,看起来像这样:
if (mysqli_num_rows($res) = 0)
我有一个多选下拉菜单,其中包含“篮子”嵌套数组中所有项目的列表。当我选择“糖”时,它应该能够返回id = 0和id = 1的对象,或者如果我同时选择“ water”和“ milk”则应该返回id = 0和id = 2的对象。我尝试使用_.map _.find _.filter的组合,但是它不起作用。也尝试过在这里寻找类似的问题,但没有找到。尽可能使用lodash。
答案 0 :(得分:1)
您可以使用此:
var result = _.filter(data, { basket: ['sugar', 'milk'] });
将产品阵列替换为您要寻找的任何产品。它们必须全部出现在同一项目中,才能保留在结果中。
尽管您清楚地表明您更喜欢基于lodash的解决方案,但我也想添加香草JS方式:
var filtered = data.filter(function(item){
return ['sugar', 'milk'].every(product => item.basket.includes(product));
});
如果您希望逻辑是只有一些选定的产品需要在购物篮中出现才能被选中,那么在lodash版本中,您还需要回调:
var result = _.filter(data, function(item) {
return _.intersection(item.basket, ['sugar', 'milk']).length;
});
在原始JS版本中,将every
替换为some
。