push () в глубокий массив

0

Попытка вставить новые вложенные объекты. Продолжайте получать, cannot read property push of undefined в строке 3.

Почему это не работает? Должен ли я делать это по-другому?

$scope.item.deliverables[0].steps[0].versions = [];
$scope.item.deliverables[0].steps[0].versions.push({assets:[{url:'aaa'}]})
$scope.item.deliverables[0].steps[0].versions.assets.push({url:'bbb'})
Теги:
arrays
javascript-objects

1 ответ

5
Лучший ответ

Вам нужно получить доступ к самим versions как массив:

$scope.item.deliverables[0].steps[0].versions = [];
$scope.item.deliverables[0].steps[0].versions.push({assets:[{url:'aaa'}]})
// the item you just pushed in the array is in .versions[0] now
$scope.item.deliverables[0].steps[0].versions[0].assets.push({url:'bbb'})

Поскольку вы сделали это:

$scope.item.deliverables[0].steps[0].versions = [];

versions - это массив, а assets как свойство для этого массива не undefined. Следовательно, ошибка

cannot read property push of undefined
  • 0
    Вы объяснили проблему, но не предложили код для фактического решения.
  • 1
    @ jfriend00, первый фрагмент кода не предлагает решение?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню