Nunjucks: прохождение через два массива одновременно

Я пытаюсь перебрать два массива одновременно в nunjucks:

Массив 1:

property.car_ids: ["23", "35", "45"]

Массив 2:

property.cars: ["Toyota", "BMW", "Volvo"]

Код Nunjucks:

<select name="carSelect">
  <option value="" >Select car...  </option>
    {% for n in range(0, property.car_ids) -%}  
      <option value="{{ property.car_ids[n] }}" >{{ property.cars[n] }}</option>
    {% endfor %}   
</select>

Ожидаемый результат цикла for:

<option value="23" >Toyota</option>
<option value="35" >BMW</option>
<option value="45" >Volvo</option>

Но вместо этого он вообще не создает никаких полей параметров. Почему не работает?

РЕДАКТИРОВАТЬ: После дальнейших экспериментов со следующим nunjucks html я еще больше запутался:

Ids: {{ property.car_ids }} //prints out 23, 35, 45
Cars: {{ property.cars }} //prints out Toyota, BMW, Volvo
Id: {{ property.car_ids[2] }}  //prints 45
Car: {{ property.cars[2] }} //prints Volvo
Length: {{ property.car_ids | length }} //prints 3 
Loop:           
{% for k in range(0, property.car_ids) %}  
  {{ property.car_ids[k] }}
{% endfor %}  //doesnt work (doesn't print anything)!!!!!

Что здесь происходит??


person coding_pianist    schedule 24.05.2020    source источник


Ответы (1)


const nunjucks  = require('nunjucks');
const env = nunjucks.configure();

const html = env.renderString(`
    {% for id in car_ids %} 
        {{id}} {{cars[loop.index0]}} 
    {% endfor %}`, 
    { 
        car_ids: [23, 35, 45],
        cars: ['Toyota', 'BMW', 'Volvo']
    }
);

console.log(html);

P.S. Я обнаружил ошибку в вашем коде: range(0, property.car_ids.length) :)

person Aikon Mogwai    schedule 24.05.2020