Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global variable in the iteration #130

Open
jevvo-trimble opened this issue May 5, 2023 · 2 comments
Open

Global variable in the iteration #130

jevvo-trimble opened this issue May 5, 2023 · 2 comments

Comments

@jevvo-trimble
Copy link

jevvo-trimble commented May 5, 2023

Hello.
Is there a way (out of the box) to use a global variable in the iteration operators like "some" or another way to create a similar rule?

I need to do this.

Example:
Note: global_var does not exist. Only for demo purposes.

Rule:
{
"some": [
{ "var": "x" },
{ "in": [ { "var" : "" }, { "global_var": "y" }] }
]
}

Data:
{
"x": [1, 2, 3, 4],
"y": [0, 1, 5]
}

First iteration:
{
"some": [
[1, 2, 3, 4],
{ "in": [ 1, [0, 1, 5] ] }
]
}

Second iteration:
{
"some": [
[1, 2, 3, 4],
{ "in": [ 2, [0, 1, 5] ] }
]
}

...

ATM it will work like this (i iteration count)
{
"some": [
{ "var": "x" },
{ "in": [ { "var" : "" }, { "var": "y" }] }
]
}

{
"some": [
{ "var": "x" },
{ "in": [ x[i], x[i].y" ] }
]
}

@tmikoss
Copy link

tmikoss commented Jan 24, 2024

I think I ran into the same issue:

const data = { numbers: [1, 2, 3] }

const singleRule = { in: [1, { var: 'numbers' }] }
expect(jsonLogic.apply(singleRule, data)).toEqual(true) // OK

const arrayRule = { some: [[1], { in: [{ var: '' }, { var: 'numbers' }] }] }
expect(jsonLogic.apply(arrayRule, data)).toEqual(true) // Fails :(

Ended up with custom operators, but would love to see it somehow work out of the box.

@Tiglat-Pileser
Copy link

Tiglat-Pileser commented Jun 20, 2024

This is the root of the problems in #61, #48, #134, #135, #124, as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants