javascript - 数组内过滤数组

标签 javascript arrays

我的数组如下

test_list = [
{ 
    id: 1,
    test_name: 'Test 1',
    members: [
        {
            user_id: 3
        },
        {
            user_id: 4
        }
    ],
},
{ 
    id: 2,
    test_name: 'Test 2',
    members: [
        {
           user_id: 4
        },
        {
            user_id: 5
        },
    ],
},
{ 
    id: 3,
    test_name: 'Test 2',
    members: [
        {
            user_id: 8
        },  
        {
            user_id: 10
        },
    ],
}
]

我想过滤特定 user_id 的测试,例如如果 user_id = 4 我希望得到这个结果

{ 
    id: 1,
    ...
},
{ 
    id: 2,
    ...
},

我尝试过这个,但它只返回成员

test_list.filter(function(item) {
      item.members.filter(function(member) {
        if(member.user_id === 4) {
          return item;
        }
      });
    })

在这种情况下有人可以帮助我吗?

最佳答案

检查 members 数组中的对象的 .some 是否具有您要查找的 user_id:

test_list = [{
    id: 1,
    test_name: 'Test 1',
    members: [{
        user_id: 3
      },
      {
        user_id: 4
      }
    ],
  },
  {
    id: 2,
    test_name: 'Test 2',
    members: [{
        user_id: 4
      },
      {
        user_id: 5
      },
    ],
  },
  {
    id: 3,
    test_name: 'Test 2',
    members: [{
      user_id: 8
    }]
  }
];

const filtered = test_list.filter(
  ({ members }) => members.some(
    ({ user_id }) => user_id === 4
  )
);
console.log(filtered);

关于javascript - 数组内过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58516882/

相关文章:

javascript - 如何在文本文件中的两个句子之间找到特定的单词

c++ - 如何使用 deleteEntry 函数删除数组中的单个字符串 C++

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

javascript - 如何用JavaScript显示数组中的所有字段?

Visual Studio 的 Javascript 结构突出显示?

javascript - 用/transition设置元素的字体大小时,如何从中心调整大小

arrays - Redux reducer ,检查状态数组中是否存在值并更新状态

javascript - AngularJS : Get each object from array and then make async calls

javascript - 是否可以将图像文件合并到一个 blob 中

javascript - 从 href jquery 加载特定的 div