Lets validate some data, and lets do some smart checks with a unknown random schema. Lets same why wnat to check internal id references, and of course internal ids wil be in iternal things, lets assume arrays for now:
for (collection of Object.values(data)) { for (i of collection) { for (field of Object.values(i)) { for (item of field) { // check item.id } } } }
But someone decided to wrap arrays into classes because, lets be honest, pure json inside js never stays pure. So lets check the iterator symbol magic:
for (field of Object.values(i)) { if (!field[Symbol.iterator]) continue; for (item of field) { // check item.id } }
Perferct, but wait... why the item takes values of single letter strings. Oh wait, dont tell me that this is a thing:
"test"[Symbol.iterator]
Yes it is, so lets add it to the condition:
typeof field === "string" || !field[Symbol.iterator]
done_