У меня есть следующий массив объектов.
const abc = [
{
sku: 1,
features: ["Slim"],
fields: [
{ label: "Material", value: "Material1" },
{ label: "Type", value: "Type1" },
]
},
{
sku: 2,
features: ["Cotton"],
fields: [
{ label: "Material", value: "Material2" },
{ label: "Type", value: "Type1" },
]
},
{
sku: 3,
features: ["Cotton"],
fields: [
{ label: "Material", value: "Material3" },
{ label: "Type", value: "Type2" },
]
}
];
Я хочу отфильтровать только те объекты, значения функций и полей которых присутствуют в этом
const fieldsArr = ["Material1", "Material2", "Type1", "Slim"]
Ожидаемый результат -
let output = [
{
sku: 1,
features: ["Slim"],
fields: [
{ label: "Material", value: "Material1" },
{ label: "Type", value: "Type1" },
]
},
{
sku: 2,
features: ["Cotton"],
fields: [
{ label: "Material", value: "Material2" },
{ label: "Type", value: "Type1" },
]
},
]
Я решил часть функций следующим образом
abc.forEach(e => {
if (e.features.some(v => fieldsArr.indexOf(v) !== -1)) {
output.push(e);
}
});
Но у меня проблема с фильтрацией части полей. Есть ли способ оптимизировать фильтрацию объектов на основе вышеуказанного условия.