У меня есть массив транспортных средств, у которого есть массив в вызове Photos. Например:
[
{
"id": 251,
"make": "Toyota",
"model": "Land Cruiser ",
"photos": [
{
"id": 7,
"photoUrl": "https://.../1607009083.jpg",
}
]
},
{
"id": 264,
"make": "Toyota",
"model": "Land Cruiser II ",
"photos": [
{
"id": 9,
"photoUrl": "https://.../1607005508.jpg",
}
]
}
]
Если я загружаю новую фотографию, мне нужно обновить массив. Я знаю VehicleId, photoId и photoUrl. Нажимая на массив, я получаю сообщение об ошибке:
this.vehicles[vehicleId].photos.push({id: photoId, photoUrl: photoUrl})
Где я ошибаюсь?
Да - отображается как идентификатор в корневом массиве. идентификатор в массиве фотографий - это photoId
Мне все еще непонятно. Предполагая, что внешний массив равен this.vehicles
, он состоит из двух элементов: this.vehicles[0]
и this.vehicles[1]
. Итак, еще раз, если vehicleId
равно 251 или 264, это не сработает (и, пожалуйста, всегда публикуйте сообщение об ошибке)
Дубликат: Найти объект по id в массиве объектов JavaScript
this.vehicles
- это массив, и вы должны найти индекс, в котором находится идентификатор транспортного средства.
const index = this.vehicles.findIndex(v => v.id === vehicleId)
if (index !== -1) {
this.vehicles[index].photos.push({id: photoId, photoUrl: photoUrl})
} else {
// No vehicle found with the vehicleId.
}
Не проще ли использовать find()
вместо findIndex()
?
Пожалуйста, не публикуйте ответы на очевидные дубликаты.
Что такое
vehicleId
? Это индекс элемента илиid
в объекте? Чтобы получить доступ к фотографиям второго объекта, вы можете использоватьthis.vehicles[1].photos
, но неthis.vehicles[264].photos
.