[英]Compare and Array to an array of objects and return a part of the matched objects
我在下面有一组对象
const response =
[
{
id: 105,
label: 'test',
directories: [ '/api/1/directories/500' ]
},
{
id: 337,
label: 'test2',
directories: [ '/api/1/directories/766' ]
},
{
id: 200,
label: 'test20',
directories: [ '/api/1/directories/95' ]
}
]
我有一个名为目录的数组
directories = [ '/api/1/directories/766', '/api/1/directories/95' ]
我正在尝试搜索/过滤响应以仅返回与目录数组中的目录匹配的对象的 ID
所以示例 output 可以如下所示,这只是匹配对象的 ID
sampleOut= [337, 200]
这可以按如下方式完成:
const out = response.filter(o => directories.includes(o.directories[0])).map(o => o.id);
请查看以下可运行的代码片段。
const response = [ { id: 105, label: 'test', directories: [ '/api/1/directories/500' ] }, { id: 337, label: 'test2', directories: [ '/api/1/directories/766' ] }, { id: 200, label: 'test20', directories: [ '/api/1/directories/95' ] } ]; const directories = [ '/api/1/directories/766', '/api/1/directories/95' ]; const out = response.filter(o => directories.includes(o.directories[0])).map(o => o.id); console.log(out)
const sampleOut = response.filter(response => directories.includes(response.directories[0]))
.map(response => response.id);
您可以使用reduce
并通过indexOf
检查存在
const response = [ { id: 105, label: 'test', directories: [ '/api/1/directories/500' ] }, { id: 337, label: 'test2', directories: [ '/api/1/directories/766' ] }, { id: 200, label: 'test20', directories: [ '/api/1/directories/95' ] } ] directories = [ '/api/1/directories/766', '/api/1/directories/95' ]; var result = response.reduce((acc, item)=>{ if(directories.indexOf(item.directories[0]) > -1){ acc.push(item.id); } return acc; },[]); console.log(result);
你可以做这样的事情。
const response = [ { id: 105, label: 'test', directories: [ '/api/1/directories/500' ] }, { id: 337, label: 'test2', directories: [ '/api/1/directories/766' ] }, { id: 200, label: 'test20', directories: [ '/api/1/directories/95' ] } ]; const directories = [ '/api/1/directories/766', '/api/1/directories/95' ]; const res = response.reduce((acc, elem)=>{ if(directories.includes(elem.directories[0])){ acc.push(elem.id) } return acc },[]); console.log(res)
如果有匹配项,您可以遍历主数组并推送所需的属性:
const response = [ { id: 105, label: 'test', directories: [ '/api/1/directories/500' ] }, { id: 337, label: 'test2', directories: [ '/api/1/directories/766' ] }, { id: 200, label: 'test20', directories: [ '/api/1/directories/95' ] } ] var directories = [ '/api/1/directories/766', '/api/1/directories/95' ] var sampleOut = [] response.forEach(function(a) { if (directories.indexOf(a.directories[0]) >= 0 ) { sampleOut.push(a.id) } }) console.log(sampleOut)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.