取出列表中以 x 开头的每个项目并将其放入新列表 - Rego

Take every item in list that starts with x and put it in a new list - Rego

list := ["a:aqsdf", "a:asdf", "b:gfs", "b:sdf", "a:adfd", "b:asdfd"]

我希望新列表只包含以 'a' 开头的项目:["a:aqsdf", "a:asdf", "a:adfd"]

我试过使用集合但没有成功。这在 python 中是轻而易举的事,但我似乎无法理解 rego。我可以把它变成一个集合,但不确定如何挤入 if 语句(startswith(list[_], "a") == true)

一种方法是使用数组理解和 startswith 内置函数:

[ x | x := list[_]; startswith(x, "a")]

游乐场示例:https://play.openpolicyagent.org/p/8mQYYvUL2h

这实际上是说如果规则主体为真,则定义一个包含 x 值的新数组。理解的规则体依次迭代 list 的所有指标以获得 x 的值,并且当 x 的值以 "a" 开头时将为真。 =20=]

参考文献: