javascript - 使用另一个对象数组过滤 Javascript 对象数组

标签 javascript arrays filter

我有 list

var list = [
  {name: 'Hello', ads: true, pas: ['Av', 'Sd', 'Qr']},
  {name: 'Fre', ads: false, pas: ['Sd', 'Bc']},
  {name: 'Nat', ads: false, pas: ['Bc', 'Mo', 'Rr']},
  {name: 'Bor', ads: true, pas: ['Bo', 'Be', 'De']},
  {name: 'Arg', ads: true, pas: ['Ar', 'Na', 'Br']},
];

数组的过滤

var filter = [
 'Sd','Be'
];

我试过使用 filter 但它没有过滤。

list
  .filter(function(ls) {
    return ls.pas
      .filter(function(p){
        return filter.indexOf(p) > -1;
      })
  })

我的预期输出

[
  {name: 'Hello', ads: true, pas: ['Av', 'Sd', 'Qr']},
  {name: 'Fre', ads: false, pas: ['Sd', 'Bc']},
  {name: 'Bor', ads: true, pas: ['Bo', 'Be', 'De']}
];

最佳答案

您可以使用 some()检查当前对象的 pas 数组中的任何元素是否在 filter 数组中。

var list = [
  {name: 'Hello', ads: true, pas: ['Av', 'Sd', 'Qr']},
  {name: 'Fre', ads: false, pas: ['Sd', 'Bc']},
  {name: 'Nat', ads: false, pas: ['Bc', 'Mo', 'Rr']},
  {name: 'Bor', ads: true, pas: ['Bo', 'Be', 'De']},
  {name: 'Arg', ads: true, pas: ['Ar', 'Na', 'Br']},
];

var filter = [
 'Sd','Be'
];

var result = list.filter(function(e) {
  return e.pas.some(function(a) {
    return filter.indexOf(a) != -1
  })
})

console.log(result);

关于javascript - 使用另一个对象数组过滤 Javascript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40085448/

相关文章:

javascript - AngularJS 过滤器最佳实践

javascript - 使用javascript的过滤器时如何获取排除的元素

php - 如何清除 iFrame 的缓存?

javascript - 在 Javascript 中交换一维数组中的列

arrays - 如何遍历 sqlite 中嵌套的 json 对象中的数组?

python - 我该如何优化这段代码?以及一般如何优化 Python for 循环?

kotlin - 根据字符串值动态过滤数组列表 - kotlin

javascript - 在 Rails 中使用 AJAX 提交动态表单的最佳方式是什么?

javascript - jquery- 改变 css 但不能重置为 original-fadein() 导致程序也停止工作

javascript - 根据日期属性对 javascript 对象进行排序