Как вернуть значения из массива объектов, применяя фильтры?
У меня есть массив объектов arrayOfObjects
:
const arrayOfObjects = [{
zone: { country: "Cuba" },
equipment:
{
_id: "1",
name: 'apple',
filter: 'fresh',
}
}, {
zone: { country: "France" },
equipment:
{
_id: "2",
name: 'orange',
filter: 'old',
}
}, {
zone: { country: "Poland" },
equipment:
{
_id: '3',
name: 'melon',
filter: 'withered',
}
}, {
zone: { country: "Spain" },
equipment:
{
_id: "4",
name: 'grapes',
filter: 'stale',
}
}]
Есть значения для фильтрации:
let filter = ['fresh', 'stale']
В итоге должно получиться так:
let newArrayOfObjects = [{
zone: { country: "Cuba" },
equipment:
{
_id: "1",
name: 'apple',
filter: 'fresh',
}
}, {
zone: { country: "Spain" },
equipment:
{
_id: "4",
name: 'grapes',
filter: 'stale',
}
}];
Не получается нормальный фильтр написать, вот пример моего кода:
newArrayOfObjects = arrayOfObjects.filter(function (currentItem) {
if (_.isMatch(currentItem.equipment, filter)) {
return true
}
})
Гибкое решение:
let newArrayOfObjects = filterHelper.call(arrayOfObjects,
'equipment.filter', ['fresh' , 'stale']
);
function filterHelper(propPath, values) {
const list = Object.fromEntries(values.map(v => [v, true])),
path = propPath.split('.');
const propValOf = obj => path.reduce((r, p) => r[p], obj);
return this.filter(o => propValOf(o) in list);
}
Как-то так:
const filter = ['fresh', 'stale'];
const filterSet = new Set(filter);
const filtered = arrayOfObjects.filter(e => filterSet.has(e.equipment.filter));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я ожидаю что когда массив пустой он будет показывать Hello worldНо он этого не делает
Мне нужно нарисовать красивую заштрихованную стрелку блока, используя SVG из одной точки (x0, y0) в другую (x1, y1), как показано на рисунке