Допустим, у меня есть большой массив объектов, как на фотографии, и меня интересуют только объекты, содержащие идентификатор категории, равный определенному идентификатору (в этом случае переменная myId, я пробовал что-то вроде этого, но не могу получить желаемый результат.
$(".category").on("click", function(e) {
e.preventDefault();
const myId = $(this).attr('id');
for(const v of app['List']) {
const nn = Object.keys(v).map((key) => key === 'categories');
console.info(nn,'nnnn')
}
})
Мне нужно только содержимое объекта List, который имеет идентификатор категории, равный конкретному или предоставленному пользователем идентификатору
измените map () на filter (), map возвращает результат для каждого входного объекта - filter будет возвращать только те объекты, которые соответствуют вашему фильтру.
const result = app.List.filter(e => e.categories.includes(myId)); Вы используете filter, чтобы найти все записи в app.List, для которых обратный вызов возвращает истинное значение. Поскольку записи имеют массив категорий, вы используете includes(myId) (или indexOf(myId) != -1), чтобы вернуть флаг для этой записи.
@ T.J.Crowder Я пробовал ваше решение, но получил пустой результат. категории содержат 'id' и 'name'
Благодаря @ T.J.Crowder, наконец решено, const result = app.List.filter (e => e.categories.find (cat => cat.id === 3));
@rai - Извините, упустил, что categories был массивом объектов (это ясно показано выше). Просто к вашему сведению, а не find, используйте some (больше ничего менять не нужно). find будет работать, но some более подходит, когда вы используете только возвращаемое значение в качестве флага.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


у массивов есть метод
filter- на удивление, вы хотите фильтровать! Каковы шансы: p