Add find
, find_index
, has
, and reject
filters to arrays
#1864
Closed
benjaminsehl
started this conversation in
Requests for Suggestions
Replies: 1 comment
-
Closing the discussion, original issue has context and feedback from the community: #1849 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Originally posted as Issue #1849
Author: Shopify
Expected end date: December 5, 2024
Background
Handling arrays in Liquid is challenging.
Developers often need to iterate over arrays to find items or check for their presence. This pattern results in imperative code and verbose templates, which detract from the simplicity and declarative nature that Liquid aims to promote.
⏭️ Upcoming: In a different proposal, we'll tackle improvements to the
where
filter and its limitation of only filtering based on equality. That's so crucial, we aim to handle that separately.Proposal
We should introduce new filters to make it easier to perform common tasks such as extracting or checking the presence of an item in an array. This will make Liquid templates simpler, less verbose, and more declarative.
All filters proposed here do not mutate the source object and return a new instance as a result of the operation:
1.
find
andfind_index
The
find
andfind_index
filters return, respectively, the item and the index of the item with the specified property value; otherwise, they returnnil
.2.
has
Returns
true
when the array includes an item with the specified property value; otherwise, returnsfalse
.Source
3.
reject
Works almost like the where filter, but returns an array excluding items with the specified property value.
Source
Call for suggestions
We welcome any feedback or opinions on this proposal. Please share your thoughts by December 5, 2024. Your input is valuable as we prepare to begin active development on this initiative.
Beta Was this translation helpful? Give feedback.
All reactions