猿问

有没有更好的方法来使用树枝测试嵌套数组中存在的值

我有一个模态,它有使用这个数据数组的树枝渲染的按钮


"buttons" => [

    [

        "title" => "Copy",

        "type" => "button",

        "attributes" => [

            "data-action" => "confirm"

        ],

        "class" => "btn-primary",

    ],

    [

        "title" => "Cancel",

        "type" => "button",

        "attributes" => [

            "aria-label" => "Close"

        ],

        "class" => "btn-light",

    ]

]

如果已经有一个属性为“aria-labal='Close'”的按钮,我希望模式不在顶角显示 [x],因此我添加了这组嵌套的 if 语句和 for 循环。


{% set hideBtnClear = false %}

{% for btn in modal.buttons %}

    {% if btn.attributes %}

        {% for key, value in btn.attributes %}

            {% if key == "aria-label" and value == "Close" %}

                {% set hideBtnClear = true %}

            {% endif %}

        {% endfor %}

    {% endif %}

{% endfor %}

{% if hideBtnClear == false %}

    [x] <--

{% endif %}

它有效但不是很优雅。有什么办法可以改善它吗?


森栏
浏览 148回答 2
2回答

哔哔one

您也可以使用过滤器filter来解决这个问题{% if btns|filter(v => v.attributes['aria-label']|default == 'Close') | length == 0 %}     [ X ]  {% endif %}使用not代替== 0也有效{% if not btns|filter(v => v.attributes['aria-label']|default == 'Close') | length %}

白猪掌柜的

变化不大,但如果您知道 中所需的键btn.attributes,则只需检查此键是否存在及其值:{% set hideBtnClear = false %}{% for btn in modal.buttons %}&nbsp; &nbsp; {% if btn.attributes['aria-label'] is defined and btn.attributes['aria-label'] == "Close" %}&nbsp; &nbsp; &nbsp; &nbsp; {% set hideBtnClear = true %}&nbsp; &nbsp; {% endif %}{% endfor %}{% if hideBtnClear == false %}&nbsp; &nbsp; [x] <--{% endif %}
随时随地看视频慕课网APP
我要回答