#javascript
Вопрос:
У меня есть массив, подобный этому:
const data = [
{
id: '3499934913',
user_data: {
user_data_stays: [
{
value: '30.0',
date: '2021-10-01T12:55:00.000Z',
},
{
value: '30.0',
date: '2021-11-01T12:55:00.000Z',
},
{
value: '30.0',
date: '2021-13-01T12:55:00.000Z',
}
],
}
},
{
id: '43534535',
user_data: {
user_data_stays: [
{
value: '30.0',
date: '2021-11-01T12:55:00.000Z',
},
{
value: '30.0',
date: '2021-12-01T12:55:00.000Z',
},
{
value: '30.0',
date: '2021-13-01T12:55:00.000Z',
}
],
}
},
]
Как я могу сохранить структуру всего массива, но фильтровать user_data_stays
только те объекты, дата которых равна 2021-10-01T12:55:00.000Z
?
Я попытался использовать фильтр и некоторые другие, но я не могу добраться до вложенного элемента внутри. Я думаю, что проблема в количестве вложенности, и я не могу с этим справиться. Я был бы признателен вам за помощь.
Ответ №1:
Вы можете использовать forEach для внешнего массива и запустить метод фильтра для внутреннего массива с помощью деструктурирования, ссылка на объект обновит внешний объект на месте.
const data = [
{
id: "3499934913",
user_data: {
user_data_stays: [
{ value: "30.0", date: "2021-10-01T12:55:00.000Z" },
{ value: "30.0", date: "2021-11-01T12:55:00.000Z" },
{ value: "30.0", date: "2021-13-01T12:55:00.000Z" },
],
},
},
{
id: "43534535",
user_data: {
user_data_stays: [
{ value: "30.0", date: "2021-11-01T12:55:00.000Z" },
{ value: "30.0", date: "2021-12-01T12:55:00.000Z" },
{ value: "30.0", date: "2021-13-01T12:55:00.000Z" },
],
},
},
];
data.forEach(({ user_data }) => {
user_data.user_data_stays = user_data.user_data_stays
.filter(({ date }) => date === '2021-10-01T12:55:00.000Z');
});
console.log(data);