2017-12-15 5 views
0

Ich bin innerhalb von ein bisschen komplexen Schleifen und ich muss einem Array einen Wert nach Index zuweisen, so dass, wenn der Wert schon da ist, es ersetzen wird, wenn es nicht wird erstelle es.Weisen Sie Array nach Index in Liquid einen Wert zu

Also brauche ich so etwas wie dies zu tun:

{% assign arr = '' | split: '' %} 
{% assign arr[index] = value %} 

, die nicht funktioniert, das Array ist noch leer.

Gibt es einen Workaround dafür?

Antwort

1

Es gibt keine direkte Problemumgehung.

Sie können das Array immer mit einem Standardwert neu erstellen, der Ihnen jedoch nur einen einzigen Wert geben würde.

Eine mögliche Arbeit um wäre die Quelle neu zu erstellen und

{% assign arr = someValue | split: '' %} <!-- splitting to single chars ? --> 
{% assign withDefaults = '' %} 
{% for ...%} 
    {% unless arr[loop.index0] == true %} 
    {% withDefaults = withDefaults | append : 'defaultValue,' %} 
    {% else %} 
    {% withDefaults = withDefaults | append : arr[loop.index0] | append : ',' %} 
{% endfor %} 
{% assign arr = withDefaults | split: ',' %} <!-- you'll have an extra blank element but that may not matter --> 
in alle fehlenden Standardwerte dann wieder aufgeteilt in ein Array füllen
Verwandte Themen