Hey Biocule!
I know this might be a bit late for you but hopefully this helps out anyone else that comes through.
I think i see what you’re trying to do and it’s worthing noting that this isn’t my solution but something I picked up from Braze, see below:
-- initialise an empty array
{% assign my_new_array = "" | split: ""%}
{% for item in my_array %}
-- apply whatever filtering you'd like
{% if item.thing == 'something' %}
-- this is the clever bit
-- you can use concat (not append) which joins two arrays, so instead of appending
-- the item directly, you slice it out which creates an array of 1 and concat the rest
-- of the array back to it!
{% assign my_new_array = my_array | slice: forloop.index0 | concat: my_new_array %}
{% endif %}
{% endfor %}
{% assign my_new_array = my_new_array | reverse %}