Короче говоря:
В последней итерации
for(int i = 0; i<=name.length; i++) {
i
будет равно name.length
, что является незаконным индексом, так как индексы массива равны нулю, основанный.
Ваш код должен читать
for(int i = 0; i < name.length; i++)
^
Ваш объединенный список по-прежнему является многомерным массивом. Вы можете решить свою проблему с помощью следующего кода, однако предпочтительно перенести логику создания (одномерного) массива на свой контроллер (, тогда вы можете удалить фильтр first
во фрагменте )
{% for item in options.projets %}
<li data-transisition="{{ myArray[random(myArray| keys)] | first }}"></li>
{% endfor %}