Отфильтровать массив объектов
Всем доброго времени суток! У меня есть массив объектов:
const arrayObj = [{
{
object:
{
id: "1",
name: 'obj1',
checkId: '001',
}
}, {
object:
{
id: "2",
name: 'obj2',
checkId: '002',
}
}, {
object:
{
id: '3',
name: 'obj3',
checkId: '003',
}
}, {
object:
{
id: "4",
name: 'obj4',
checkId: '004',
}
}]
Есть массив строк:
const arrayCheckIds = ['003', '001']
Должен получиться массив строк вида:
let filtered = ['obj3','obj1']
Подскажите плиз как это можно реализовать в JS?
Ответы (1 шт):
Автор решения: entithat
→ Ссылка
Сначала строки вида 003, 001 приводим в нормальный вид. Потом фильтруем массив arrayobj и проверяем есть ли id текущего элемента в arrayCheckIds. Потом проходимся мапом, чтобы получить только свойство name.
const arrayObj = [{
"object": {
id: "1",
name: 'obj1',
checkId: '001',
}
},
{
"object": {
id: "2",
name: 'obj2',
checkId: '002',
}
},
{
"object": {
id: '3',
name: 'obj3',
checkId: '003',
}
},
{
"object": {
id: "4",
name: 'obj4',
checkId: '004',
}
}
];
const arrayCheckIds = ['003', '001'].map(e=>''+Number(e));
console.log(arrayObj.filter(e => arrayCheckIds.includes(e.object.id)).map(e => e.object.name));