ฉันมีปัญหานี้เมื่อไม่นานมานี้ ลองนึกภาพคุณมีอาร์เรย์เช่นนี้:
data = {
'user': 'admin',
'password': 'admin1234',
'role': 'admin',
'group': 'root',
'profile': 'admin',
'control': 'all',
'level': 1,
'session': '#DFSFASADASD02',
'pre_oa': 'PRE-OA',
'hepa_oa': 'HEPA-OA',
'pre_ra': 'HEPA-RA',
'hepa_ra': 'HEPA-RA',
'deodor_ra': 'DEODOR-RA'
}
ดังนั้นคุณต้องการแสดงข้อมูลนี้เป็นสองแถว แต่ลบรหัสผ่านออกจากรายการนั้น ด้วยเหตุนี้การแบ่ง 2 อาร์เรย์จะเป็นเรื่องง่ายด้วยslice
ตัวกรอง อย่างไรก็ตามเราต้องลบรหัสผ่าน ด้วยเหตุนี้ฉันจึงใช้ตัวอย่างข้อมูลนี้ ความคิดที่จะนำองค์ประกอบทั้งหมดน้อยกว่าdata
ขนาดองค์ประกอบหารด้วย 2. length
การคำนวณนี้เราใช้ตัวกรอง loop.index
ตอนนี้ที่จะได้รับดัชนีของผู้ใช้องค์ประกอบเราในปัจจุบัน และในที่สุดเราก็ * พุชองค์ประกอบที่เชื่อมโยงในอาร์เรย์ซ้ายหรือขวา อาร์เรย์ที่เชื่อมโยงมีสององค์ประกอบkey
และvalue
. ในการอ้างอิงคีย์อาร์เรย์ในตัวดำเนินการ twit เรา()
และเราใช้merge
ตัวกรองเพื่อดันเข้าไปในอาร์เรย์ดังที่แสดงไว้ที่นี่{% set left_list = left_list|merge({ (key): value }) %}
นี่คือโซลูชั่นที่สมบูรณ์
{% set left_list = {} %}
{% set right_list = {} %}
{% set limit = data|length // 2 %}
{% for key, value in data|cast_to_array %}
{% if key != 'password' %}
{% if loop.index <= limit %}
{% set left_list = left_list|merge({ (key): value }) %}
{% else %}
{% set right_list = right_list|merge({ (key): value }) %}
{% endif %}
{% endif %}
{% endfor %}
{% for key, value in left_list %}
<p>
<label for="{{key}}">{{key}}</label>
<input type="text" name="{{key}}" id="{{key}}" value="{{value}}"
class="text ui-widget-content ui-corner-all">
</p>
{% endfor %}