我下面有一个对象数组
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
因此示例输出可能类似于以下内容,仅是匹配对象的ID
sampleOut= [337, 200]
答案 0 :(得分:3)
这可以按照以下步骤进行:
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)
答案 1 :(得分:2)
const sampleOut = response.filter(response => directories.includes(response.directories[0]))
.map(response => response.id);
答案 2 :(得分:2)
您可以使用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);
答案 3 :(得分:2)
您可以这样做。
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)
答案 4 :(得分:1)
如果存在匹配项,则可以遍历主数组并推送所需的属性:
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)