Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Iterators or loop
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Browser:
Chrome 126
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Recursive Iterator
1142.8 Ops/sec
NonRecursive Iterator
1159.6 Ops/sec
Recursive Common
1257.6 Ops/sec
NonRecursive Common
1284.2 Ops/sec
Script Preparation code:
var MOCK = [ { "__typename": "Field", "value": "nostrud ullamco", "fields": [ { "__typename": "Field1", "value": "eiusmod aliqua", "field": { "value": "et adipisicing", "__typename": "Field2Problem" }, "fields": [ { "value": "magna reprehenderit", "__typename": "Field3", "field": { "value": "aliquip consequat", "__typename": "Field4Problem" } }, { "value": "consectetur fugiat", "__typename": "Field3Problem", "field": { "value": "ullamco non", "__typename": "Field4" } }, { "value": "voluptate ea", "__typename": "Field3Problem", "field": { "value": "duis amet", "__typename": "Field4Problem" } }, { "value": "laboris sunt", "__typename": "Field3", "field": { "value": "ut consectetur", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "magna ex", "field": { "value": "veniam laboris", "__typename": "Field2Problem" }, "fields": [ { "value": "tempor in", "__typename": "Field3Problem", "field": { "value": "fugiat cupidatat", "__typename": "Field4" } }, { "value": "velit laboris", "__typename": "Field3", "field": { "value": "ullamco officia", "__typename": "Field4" } }, { "value": "ullamco laboris", "__typename": "Field3", "field": { "value": "ut sit", "__typename": "Field4" } }, { "value": "et cupidatat", "__typename": "Field3", "field": { "value": "adipisicing aute", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "id sit", "field": { "value": "qui in", "__typename": "Field2Problem" }, "fields": [ { "value": "qui labore", "__typename": "Field3Problem", "field": { "value": "incididunt elit", "__typename": "Field4Problem" } }, { "value": "consectetur sit", "__typename": "Field3", "field": { "value": "consequat magna", "__typename": "Field4Problem" } }, { "value": "sunt et", "__typename": "Field3Problem", "field": { "value": "officia ad", "__typename": "Field4Problem" } }, { "value": "minim quis", "__typename": "Field3Problem", "field": { "value": "sunt voluptate", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "veniam sit", "field": { "value": "deserunt anim", "__typename": "Field2Problem" }, "fields": [ { "value": "amet culpa", "__typename": "Field3Problem", "field": { "value": "ad ex", "__typename": "Field4Problem" } }, { "value": "est nisi", "__typename": "Field3Problem", "field": { "value": "do tempor", "__typename": "Field4Problem" } }, { "value": "tempor reprehenderit", "__typename": "Field3", "field": { "value": "Lorem amet", "__typename": "Field4Problem" } }, { "value": "occaecat ea", "__typename": "Field3Problem", "field": { "value": "incididunt minim", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "sint aute", "field": { "value": "sunt laborum", "__typename": "Field2Problem" }, "fields": [ { "value": "est commodo", "__typename": "Field3", "field": { "value": "Lorem ea", "__typename": "Field4" } }, { "value": "tempor irure", "__typename": "Field3", "field": { "value": "proident minim", "__typename": "Field4Problem" } }, { "value": "veniam aliqua", "__typename": "Field3Problem", "field": { "value": "irure sit", "__typename": "Field4" } }, { "value": "nostrud reprehenderit", "__typename": "Field3", "field": { "value": "et veniam", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "id dolor", "field": { "value": "voluptate et", "__typename": "Field2" }, "fields": [ { "value": "non aliqua", "__typename": "Field3", "field": { "value": "labore dolore", "__typename": "Field4Problem" } }, { "value": "proident commodo", "__typename": "Field3", "field": { "value": "aliquip cillum", "__typename": "Field4Problem" } }, { "value": "ea qui", "__typename": "Field3Problem", "field": { "value": "eiusmod exercitation", "__typename": "Field4Problem" } }, { "value": "non velit", "__typename": "Field3Problem", "field": { "value": "aliqua sint", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "dolore adipisicing", "field": { "value": "consequat Lorem", "__typename": "Field2Problem" }, "fields": [ { "value": "ut aliquip", "__typename": "Field3Problem", "field": { "value": "quis do", "__typename": "Field4Problem" } }, { "value": "minim excepteur", "__typename": "Field3", "field": { "value": "aliqua consectetur", "__typename": "Field4Problem" } }, { "value": "fugiat do", "__typename": "Field3", "field": { "value": "velit quis", "__typename": "Field4Problem" } }, { "value": "non et", "__typename": "Field3Problem", "field": { "value": "aute aute", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "minim adipisicing", "field": { "value": "eiusmod commodo", "__typename": "Field2Problem" }, "fields": [ { "value": "consequat anim", "__typename": "Field3Problem", "field": { "value": "et excepteur", "__typename": "Field4Problem" } }, { "value": "eu aliquip", "__typename": "Field3Problem", "field": { "value": "amet veniam", "__typename": "Field4" } }, { "value": "in fugiat", "__typename": "Field3", "field": { "value": "dolor sunt", "__typename": "Field4Problem" } }, { "value": "labore cillum", "__typename": "Field3", "field": { "value": "cupidatat adipisicing", "__typename": "Field4" } } ] } ] }, { "__typename": "Field", "value": "ea culpa", "fields": [ { "__typename": "Field1Problem", "value": "esse ex", "field": { "value": "irure proident", "__typename": "Field2" }, "fields": [ { "value": "velit enim", "__typename": "Field3", "field": { "value": "est aliqua", "__typename": "Field4Problem" } }, { "value": "commodo proident", "__typename": "Field3Problem", "field": { "value": "do laborum", "__typename": "Field4" } }, { "value": "non cillum", "__typename": "Field3Problem", "field": { "value": "consequat culpa", "__typename": "Field4Problem" } }, { "value": "aliquip ipsum", "__typename": "Field3Problem", "field": { "value": "reprehenderit velit", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "sit ex", "field": { "value": "do officia", "__typename": "Field2" }, "fields": [ { "value": "aliquip nostrud", "__typename": "Field3", "field": { "value": "veniam ipsum", "__typename": "Field4Problem" } }, { "value": "incididunt sint", "__typename": "Field3", "field": { "value": "ut esse", "__typename": "Field4Problem" } }, { "value": "sint aliqua", "__typename": "Field3", "field": { "value": "aliqua irure", "__typename": "Field4Problem" } }, { "value": "ullamco laborum", "__typename": "Field3", "field": { "value": "esse consectetur", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "do id", "field": { "value": "eu veniam", "__typename": "Field2Problem" }, "fields": [ { "value": "officia adipisicing", "__typename": "Field3Problem", "field": { "value": "est nostrud", "__typename": "Field4" } }, { "value": "cupidatat ipsum", "__typename": "Field3", "field": { "value": "fugiat in", "__typename": "Field4" } }, { "value": "reprehenderit minim", "__typename": "Field3", "field": { "value": "enim exercitation", "__typename": "Field4Problem" } }, { "value": "velit in", "__typename": "Field3", "field": { "value": "voluptate mollit", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "ullamco cupidatat", "field": { "value": "nostrud aute", "__typename": "Field2" }, "fields": [ { "value": "dolore mollit", "__typename": "Field3", "field": { "value": "eiusmod ex", "__typename": "Field4Problem" } }, { "value": "deserunt dolor", "__typename": "Field3Problem", "field": { "value": "fugiat ullamco", "__typename": "Field4" } }, { "value": "occaecat eu", "__typename": "Field3Problem", "field": { "value": "nulla esse", "__typename": "Field4Problem" } }, { "value": "velit reprehenderit", "__typename": "Field3Problem", "field": { "value": "aute consequat", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "occaecat amet", "field": { "value": "dolore nulla", "__typename": "Field2Problem" }, "fields": [ { "value": "non elit", "__typename": "Field3Problem", "field": { "value": "labore adipisicing", "__typename": "Field4" } }, { "value": "et laboris", "__typename": "Field3", "field": { "value": "velit et", "__typename": "Field4" } }, { "value": "nostrud ea", "__typename": "Field3", "field": { "value": "proident culpa", "__typename": "Field4Problem" } }, { "value": "excepteur commodo", "__typename": "Field3Problem", "field": { "value": "aliquip laborum", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "pariatur est", "field": { "value": "magna ea", "__typename": "Field2Problem" }, "fields": [ { "value": "magna ad", "__typename": "Field3Problem", "field": { "value": "ullamco quis", "__typename": "Field4" } }, { "value": "veniam deserunt", "__typename": "Field3Problem", "field": { "value": "id occaecat", "__typename": "Field4" } }, { "value": "mollit id", "__typename": "Field3Problem", "field": { "value": "culpa duis", "__typename": "Field4" } }, { "value": "excepteur quis", "__typename": "Field3", "field": { "value": "non tempor", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "aliquip aliqua", "field": { "value": "cupidatat amet", "__typename": "Field2Problem" }, "fields": [ { "value": "eiusmod nostrud", "__typename": "Field3", "field": { "value": "enim esse", "__typename": "Field4" } }, { "value": "reprehenderit Lorem", "__typename": "Field3Problem", "field": { "value": "irure consectetur", "__typename": "Field4Problem" } }, { "value": "adipisicing laboris", "__typename": "Field3Problem", "field": { "value": "et deserunt", "__typename": "Field4Problem" } }, { "value": "occaecat Lorem", "__typename": "Field3", "field": { "value": "laborum occaecat", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "cupidatat amet", "field": { "value": "magna nostrud", "__typename": "Field2Problem" }, "fields": [ { "value": "pariatur magna", "__typename": "Field3", "field": { "value": "dolore nisi", "__typename": "Field4" } }, { "value": "occaecat sint", "__typename": "Field3Problem", "field": { "value": "aute in", "__typename": "Field4Problem" } }, { "value": "non ea", "__typename": "Field3Problem", "field": { "value": "exercitation sint", "__typename": "Field4Problem" } }, { "value": "mollit velit", "__typename": "Field3Problem", "field": { "value": "mollit fugiat", "__typename": "Field4" } } ] } ] }, { "__typename": "Field", "value": "sunt veniam", "fields": [ { "__typename": "Field1", "value": "aute elit", "field": { "value": "culpa veniam", "__typename": "Field2Problem" }, "fields": [ { "value": "in do", "__typename": "Field3", "field": { "value": "irure laborum", "__typename": "Field4" } }, { "value": "veniam sint", "__typename": "Field3", "field": { "value": "culpa nisi", "__typename": "Field4Problem" } }, { "value": "voluptate sunt", "__typename": "Field3Problem", "field": { "value": "sint nisi", "__typename": "Field4Problem" } }, { "value": "aliqua enim", "__typename": "Field3", "field": { "value": "esse ad", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "cupidatat adipisicing", "field": { "value": "nisi adipisicing", "__typename": "Field2Problem" }, "fields": [ { "value": "occaecat et", "__typename": "Field3", "field": { "value": "officia tempor", "__typename": "Field4" } }, { "value": "dolore sit", "__typename": "Field3", "field": { "value": "laborum consectetur", "__typename": "Field4" } }, { "value": "velit do", "__typename": "Field3Problem", "field": { "value": "pariatur duis", "__typename": "Field4Problem" } }, { "value": "commodo duis", "__typename": "Field3", "field": { "value": "reprehenderit incididunt", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "Lorem exercitation", "field": { "value": "aute fugiat", "__typename": "Field2" }, "fields": [ { "value": "consectetur veniam", "__typename": "Field3", "field": { "value": "sunt id", "__typename": "Field4Problem" } }, { "value": "occaecat do", "__typename": "Field3Problem", "field": { "value": "exercitation duis", "__typename": "Field4Problem" } }, { "value": "mollit elit", "__typename": "Field3", "field": { "value": "et officia", "__typename": "Field4Problem" } }, { "value": "labore occaecat", "__typename": "Field3", "field": { "value": "culpa incididunt", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "Lorem qui", "field": { "value": "aliqua laborum", "__typename": "Field2" }, "fields": [ { "value": "ea magna", "__typename": "Field3", "field": { "value": "qui elit", "__typename": "Field4Problem" } }, { "value": "qui pariatur", "__typename": "Field3Problem", "field": { "value": "exercitation sit", "__typename": "Field4Problem" } }, { "value": "nisi minim", "__typename": "Field3", "field": { "value": "esse reprehenderit", "__typename": "Field4Problem" } }, { "value": "do ad", "__typename": "Field3Problem", "field": { "value": "ex dolore", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "Lorem reprehenderit", "field": { "value": "velit id", "__typename": "Field2" }, "fields": [ { "value": "eu id", "__typename": "Field3", "field": { "value": "Lorem veniam", "__typename": "Field4Problem" } }, { "value": "ea sint", "__typename": "Field3Problem", "field": { "value": "irure dolor", "__typename": "Field4Problem" } }, { "value": "do amet", "__typename": "Field3", "field": { "value": "eu id", "__typename": "Field4" } }, { "value": "tempor Lorem", "__typename": "Field3Problem", "field": { "value": "irure irure", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "ut laborum", "field": { "value": "voluptate occaecat", "__typename": "Field2Problem" }, "fields": [ { "value": "est tempor", "__typename": "Field3", "field": { "value": "cupidatat ut", "__typename": "Field4" } }, { "value": "aliqua id", "__typename": "Field3", "field": { "value": "nostrud quis", "__typename": "Field4" } }, { "value": "laborum ea", "__typename": "Field3", "field": { "value": "sunt et", "__typename": "Field4" } }, { "value": "duis id", "__typename": "Field3", "field": { "value": "et eiusmod", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "et exercitation", "field": { "value": "est reprehenderit", "__typename": "Field2" }, "fields": [ { "value": "nisi esse", "__typename": "Field3Problem", "field": { "value": "minim laborum", "__typename": "Field4Problem" } }, { "value": "aute amet", "__typename": "Field3", "field": { "value": "nulla occaecat", "__typename": "Field4" } }, { "value": "consequat ullamco", "__typename": "Field3Problem", "field": { "value": "do eu", "__typename": "Field4" } }, { "value": "ut consectetur", "__typename": "Field3", "field": { "value": "aliqua minim", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "deserunt occaecat", "field": { "value": "cupidatat Lorem", "__typename": "Field2Problem" }, "fields": [ { "value": "irure quis", "__typename": "Field3", "field": { "value": "dolore magna", "__typename": "Field4" } }, { "value": "velit cupidatat", "__typename": "Field3Problem", "field": { "value": "pariatur ex", "__typename": "Field4" } }, { "value": "sit velit", "__typename": "Field3Problem", "field": { "value": "proident nulla", "__typename": "Field4Problem" } }, { "value": "culpa exercitation", "__typename": "Field3Problem", "field": { "value": "sint veniam", "__typename": "Field4" } } ] } ] }, { "__typename": "Field", "value": "minim nisi", "fields": [ { "__typename": "Field1Problem", "value": "amet ex", "field": { "value": "et sit", "__typename": "Field2" }, "fields": [ { "value": "nisi eu", "__typename": "Field3", "field": { "value": "fugiat laboris", "__typename": "Field4" } }, { "value": "tempor elit", "__typename": "Field3Problem", "field": { "value": "ut laborum", "__typename": "Field4" } }, { "value": "culpa Lorem", "__typename": "Field3", "field": { "value": "veniam nulla", "__typename": "Field4Problem" } }, { "value": "non aliquip", "__typename": "Field3Problem", "field": { "value": "culpa ex", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "dolor id", "field": { "value": "amet proident", "__typename": "Field2" }, "fields": [ { "value": "pariatur pariatur", "__typename": "Field3", "field": { "value": "id sunt", "__typename": "Field4Problem" } }, { "value": "anim amet", "__typename": "Field3", "field": { "value": "quis deserunt", "__typename": "Field4Problem" } }, { "value": "non fugiat", "__typename": "Field3", "field": { "value": "sunt voluptate", "__typename": "Field4Problem" } }, { "value": "esse incididunt", "__typename": "Field3Problem", "field": { "value": "cillum dolore", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "esse eiusmod", "field": { "value": "aute consectetur", "__typename": "Field2Problem" }, "fields": [ { "value": "sint amet", "__typename": "Field3Problem", "field": { "value": "dolor commodo", "__typename": "Field4Problem" } }, { "value": "proident anim", "__typename": "Field3", "field": { "value": "commodo cillum", "__typename": "Field4Problem" } }, { "value": "cupidatat non", "__typename": "Field3", "field": { "value": "pariatur id", "__typename": "Field4Problem" } }, { "value": "nostrud nisi", "__typename": "Field3", "field": { "value": "do qui", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "laborum est", "field": { "value": "ullamco culpa", "__typename": "Field2" }, "fields": [ { "value": "aliqua excepteur", "__typename": "Field3Problem", "field": { "value": "labore laboris", "__typename": "Field4" } }, { "value": "aute quis", "__typename": "Field3", "field": { "value": "cillum deserunt", "__typename": "Field4" } }, { "value": "labore excepteur", "__typename": "Field3", "field": { "value": "non incididunt", "__typename": "Field4Problem" } }, { "value": "est amet", "__typename": "Field3", "field": { "value": "commodo qui", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "in amet", "field": { "value": "culpa officia", "__typename": "Field2Problem" }, "fields": [ { "value": "consectetur elit", "__typename": "Field3Problem", "field": { "value": "culpa occaecat", "__typename": "Field4Problem" } }, { "value": "Lorem Lorem", "__typename": "Field3Problem", "field": { "value": "nulla velit", "__typename": "Field4Problem" } }, { "value": "aliqua exercitation", "__typename": "Field3", "field": { "value": "commodo voluptate", "__typename": "Field4Problem" } }, { "value": "sit ut", "__typename": "Field3", "field": { "value": "ea consequat", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "dolor consequat", "field": { "value": "esse elit", "__typename": "Field2Problem" }, "fields": [ { "value": "labore elit", "__typename": "Field3Problem", "field": { "value": "qui reprehenderit", "__typename": "Field4Problem" } }, { "value": "aute magna", "__typename": "Field3", "field": { "value": "laborum qui", "__typename": "Field4" } }, { "value": "magna sunt", "__typename": "Field3", "field": { "value": "laboris incididunt", "__typename": "Field4Problem" } }, { "value": "consequat aute", "__typename": "Field3", "field": { "value": "id ut", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "nisi Lorem", "field": { "value": "veniam non", "__typename": "Field2" }, "fields": [ { "value": "aliquip velit", "__typename": "Field3Problem", "field": { "value": "fugiat commodo", "__typename": "Field4" } }, { "value": "est proident", "__typename": "Field3", "field": { "value": "officia nisi", "__typename": "Field4Problem" } }, { "value": "nulla cupidatat", "__typename": "Field3Problem", "field": { "value": "exercitation ea", "__typename": "Field4" } }, { "value": "commodo ut", "__typename": "Field3Problem", "field": { "value": "consequat ad", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "irure amet", "field": { "value": "ut laborum", "__typename": "Field2" }, "fields": [ { "value": "dolore culpa", "__typename": "Field3", "field": { "value": "labore labore", "__typename": "Field4Problem" } }, { "value": "adipisicing elit", "__typename": "Field3Problem", "field": { "value": "Lorem aute", "__typename": "Field4Problem" } }, { "value": "ad voluptate", "__typename": "Field3Problem", "field": { "value": "ea ullamco", "__typename": "Field4Problem" } }, { "value": "Lorem non", "__typename": "Field3Problem", "field": { "value": "reprehenderit cillum", "__typename": "Field4Problem" } } ] } ] }, { "__typename": "Field", "value": "dolore excepteur", "fields": [ { "__typename": "Field1Problem", "value": "culpa fugiat", "field": { "value": "fugiat aute", "__typename": "Field2" }, "fields": [ { "value": "pariatur exercitation", "__typename": "Field3", "field": { "value": "irure excepteur", "__typename": "Field4Problem" } }, { "value": "sit do", "__typename": "Field3Problem", "field": { "value": "labore tempor", "__typename": "Field4Problem" } }, { "value": "incididunt est", "__typename": "Field3", "field": { "value": "magna sit", "__typename": "Field4Problem" } }, { "value": "amet esse", "__typename": "Field3Problem", "field": { "value": "laborum quis", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "nulla consequat", "field": { "value": "laboris et", "__typename": "Field2Problem" }, "fields": [ { "value": "aute eiusmod", "__typename": "Field3", "field": { "value": "reprehenderit velit", "__typename": "Field4" } }, { "value": "fugiat magna", "__typename": "Field3Problem", "field": { "value": "labore ad", "__typename": "Field4Problem" } }, { "value": "veniam ad", "__typename": "Field3", "field": { "value": "laboris est", "__typename": "Field4Problem" } }, { "value": "aliquip culpa", "__typename": "Field3", "field": { "value": "est anim", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "incididunt deserunt", "field": { "value": "non officia", "__typename": "Field2" }, "fields": [ { "value": "sint reprehenderit", "__typename": "Field3", "field": { "value": "anim deserunt", "__typename": "Field4" } }, { "value": "laboris mollit", "__typename": "Field3Problem", "field": { "value": "magna elit", "__typename": "Field4Problem" } }, { "value": "nostrud ullamco", "__typename": "Field3Problem", "field": { "value": "anim exercitation", "__typename": "Field4Problem" } }, { "value": "sint duis", "__typename": "Field3Problem", "field": { "value": "proident velit", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "officia non", "field": { "value": "aliqua ad", "__typename": "Field2Problem" }, "fields": [ { "value": "laborum commodo", "__typename": "Field3", "field": { "value": "sit deserunt", "__typename": "Field4Problem" } }, { "value": "consectetur mollit", "__typename": "Field3Problem", "field": { "value": "nulla non", "__typename": "Field4Problem" } }, { "value": "et ad", "__typename": "Field3", "field": { "value": "anim ea", "__typename": "Field4" } }, { "value": "et nostrud", "__typename": "Field3", "field": { "value": "excepteur officia", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "irure occaecat", "field": { "value": "fugiat do", "__typename": "Field2Problem" }, "fields": [ { "value": "ad ad", "__typename": "Field3Problem", "field": { "value": "nulla irure", "__typename": "Field4Problem" } }, { "value": "et esse", "__typename": "Field3", "field": { "value": "reprehenderit anim", "__typename": "Field4Problem" } }, { "value": "ea Lorem", "__typename": "Field3", "field": { "value": "exercitation consequat", "__typename": "Field4Problem" } }, { "value": "pariatur commodo", "__typename": "Field3", "field": { "value": "sunt ea", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "quis do", "field": { "value": "nostrud proident", "__typename": "Field2" }, "fields": [ { "value": "consequat labore", "__typename": "Field3Problem", "field": { "value": "do sit", "__typename": "Field4" } }, { "value": "excepteur ad", "__typename": "Field3", "field": { "value": "aliqua commodo", "__typename": "Field4" } }, { "value": "veniam minim", "__typename": "Field3Problem", "field": { "value": "et proident", "__typename": "Field4Problem" } }, { "value": "in ad", "__typename": "Field3Problem", "field": { "value": "nisi officia", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "amet officia", "field": { "value": "laborum ex", "__typename": "Field2Problem" }, "fields": [ { "value": "nostrud anim", "__typename": "Field3Problem", "field": { "value": "excepteur aliquip", "__typename": "Field4" } }, { "value": "aute esse", "__typename": "Field3Problem", "field": { "value": "ut officia", "__typename": "Field4Problem" } }, { "value": "reprehenderit labore", "__typename": "Field3Problem", "field": { "value": "magna culpa", "__typename": "Field4Problem" } }, { "value": "aliqua aute", "__typename": "Field3", "field": { "value": "pariatur in", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "cillum ad", "field": { "value": "consequat eu", "__typename": "Field2Problem" }, "fields": [ { "value": "ipsum commodo", "__typename": "Field3", "field": { "value": "et exercitation", "__typename": "Field4" } }, { "value": "sint dolor", "__typename": "Field3Problem", "field": { "value": "id proident", "__typename": "Field4Problem" } }, { "value": "reprehenderit esse", "__typename": "Field3Problem", "field": { "value": "eiusmod tempor", "__typename": "Field4" } }, { "value": "amet velit", "__typename": "Field3Problem", "field": { "value": "exercitation minim", "__typename": "Field4Problem" } } ] } ] }, { "__typename": "Field", "value": "consectetur eu", "fields": [ { "__typename": "Field1Problem", "value": "fugiat magna", "field": { "value": "cupidatat ad", "__typename": "Field2" }, "fields": [ { "value": "velit nostrud", "__typename": "Field3", "field": { "value": "enim amet", "__typename": "Field4" } }, { "value": "qui velit", "__typename": "Field3", "field": { "value": "laborum irure", "__typename": "Field4" } }, { "value": "eu dolor", "__typename": "Field3", "field": { "value": "consectetur incididunt", "__typename": "Field4" } }, { "value": "aliquip qui", "__typename": "Field3", "field": { "value": "ad id", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "non deserunt", "field": { "value": "occaecat occaecat", "__typename": "Field2Problem" }, "fields": [ { "value": "qui irure", "__typename": "Field3", "field": { "value": "enim ex", "__typename": "Field4" } }, { "value": "ad sunt", "__typename": "Field3Problem", "field": { "value": "et officia", "__typename": "Field4Problem" } }, { "value": "sint in", "__typename": "Field3Problem", "field": { "value": "aliquip consectetur", "__typename": "Field4" } }, { "value": "nisi adipisicing", "__typename": "Field3Problem", "field": { "value": "ex excepteur", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "ea sit", "field": { "value": "nulla eu", "__typename": "Field2Problem" }, "fields": [ { "value": "aliqua pariatur", "__typename": "Field3Problem", "field": { "value": "proident irure", "__typename": "Field4Problem" } }, { "value": "cupidatat dolor", "__typename": "Field3Problem", "field": { "value": "nulla esse", "__typename": "Field4" } }, { "value": "consequat do", "__typename": "Field3", "field": { "value": "fugiat cillum", "__typename": "Field4" } }, { "value": "ut minim", "__typename": "Field3Problem", "field": { "value": "minim amet", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "velit aute", "field": { "value": "cillum voluptate", "__typename": "Field2" }, "fields": [ { "value": "ea commodo", "__typename": "Field3Problem", "field": { "value": "commodo esse", "__typename": "Field4" } }, { "value": "in nulla", "__typename": "Field3", "field": { "value": "ad est", "__typename": "Field4" } }, { "value": "adipisicing ex", "__typename": "Field3Problem", "field": { "value": "esse sit", "__typename": "Field4Problem" } }, { "value": "labore pariatur", "__typename": "Field3", "field": { "value": "ea ex", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "aliquip in", "field": { "value": "amet id", "__typename": "Field2" }, "fields": [ { "value": "exercitation laborum", "__typename": "Field3", "field": { "value": "enim sint", "__typename": "Field4Problem" } }, { "value": "sit occaecat", "__typename": "Field3", "field": { "value": "consequat non", "__typename": "Field4Problem" } }, { "value": "fugiat voluptate", "__typename": "Field3", "field": { "value": "consequat non", "__typename": "Field4" } }, { "value": "enim quis", "__typename": "Field3", "field": { "value": "cillum velit", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "dolore nulla", "field": { "value": "eu aliqua", "__typename": "Field2Problem" }, "fields": [ { "value": "consequat aliqua", "__typename": "Field3Problem", "field": { "value": "sint amet", "__typename": "Field4Problem" } }, { "value": "anim elit", "__typename": "Field3", "field": { "value": "velit ex", "__typename": "Field4" } }, { "value": "amet commodo", "__typename": "Field3Problem", "field": { "value": "amet ut", "__typename": "Field4" } }, { "value": "culpa ex", "__typename": "Field3Problem", "field": { "value": "consequat veniam", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "sint amet", "field": { "value": "amet dolor", "__typename": "Field2Problem" }, "fields": [ { "value": "velit do", "__typename": "Field3", "field": { "value": "pariatur sint", "__typename": "Field4" } }, { "value": "aute veniam", "__typename": "Field3", "field": { "value": "dolore sunt", "__typename": "Field4Problem" } }, { "value": "sunt laboris", "__typename": "Field3", "field": { "value": "in excepteur", "__typename": "Field4" } }, { "value": "eu consequat", "__typename": "Field3Problem", "field": { "value": "proident enim", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "aliqua ex", "field": { "value": "et sunt", "__typename": "Field2Problem" }, "fields": [ { "value": "enim sint", "__typename": "Field3", "field": { "value": "id culpa", "__typename": "Field4" } }, { "value": "aliqua excepteur", "__typename": "Field3", "field": { "value": "in voluptate", "__typename": "Field4" } }, { "value": "sint incididunt", "__typename": "Field3Problem", "field": { "value": "in nostrud", "__typename": "Field4" } }, { "value": "consequat voluptate", "__typename": "Field3Problem", "field": { "value": "ullamco eiusmod", "__typename": "Field4Problem" } } ] } ] }, { "__typename": "Field", "value": "nulla non", "fields": [ { "__typename": "Field1Problem", "value": "et eu", "field": { "value": "reprehenderit in", "__typename": "Field2Problem" }, "fields": [ { "value": "sint veniam", "__typename": "Field3Problem", "field": { "value": "do labore", "__typename": "Field4" } }, { "value": "consequat ad", "__typename": "Field3Problem", "field": { "value": "ex proident", "__typename": "Field4" } }, { "value": "anim eiusmod", "__typename": "Field3", "field": { "value": "excepteur officia", "__typename": "Field4Problem" } }, { "value": "nulla magna", "__typename": "Field3", "field": { "value": "mollit nulla", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "deserunt velit", "field": { "value": "magna velit", "__typename": "Field2Problem" }, "fields": [ { "value": "minim nostrud", "__typename": "Field3", "field": { "value": "amet Lorem", "__typename": "Field4" } }, { "value": "ex deserunt", "__typename": "Field3Problem", "field": { "value": "ipsum minim", "__typename": "Field4Problem" } }, { "value": "velit proident", "__typename": "Field3", "field": { "value": "adipisicing Lorem", "__typename": "Field4" } }, { "value": "duis aute", "__typename": "Field3Problem", "field": { "value": "pariatur nisi", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "sint non", "field": { "value": "Lorem enim", "__typename": "Field2Problem" }, "fields": [ { "value": "reprehenderit duis", "__typename": "Field3", "field": { "value": "consequat velit", "__typename": "Field4Problem" } }, { "value": "culpa dolore", "__typename": "Field3", "field": { "value": "reprehenderit fugiat", "__typename": "Field4" } }, { "value": "duis nisi", "__typename": "Field3Problem", "field": { "value": "amet est", "__typename": "Field4" } }, { "value": "excepteur aliquip", "__typename": "Field3Problem", "field": { "value": "cupidatat dolor", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "esse Lorem", "field": { "value": "elit qui", "__typename": "Field2Problem" }, "fields": [ { "value": "laboris fugiat", "__typename": "Field3", "field": { "value": "labore laborum", "__typename": "Field4" } }, { "value": "fugiat incididunt", "__typename": "Field3", "field": { "value": "sunt laboris", "__typename": "Field4" } }, { "value": "anim culpa", "__typename": "Field3", "field": { "value": "elit occaecat", "__typename": "Field4" } }, { "value": "do fugiat", "__typename": "Field3Problem", "field": { "value": "sint cupidatat", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "sint fugiat", "field": { "value": "et aliquip", "__typename": "Field2Problem" }, "fields": [ { "value": "enim pariatur", "__typename": "Field3Problem", "field": { "value": "proident velit", "__typename": "Field4" } }, { "value": "non culpa", "__typename": "Field3", "field": { "value": "fugiat Lorem", "__typename": "Field4Problem" } }, { "value": "in et", "__typename": "Field3Problem", "field": { "value": "ut nisi", "__typename": "Field4Problem" } }, { "value": "deserunt ut", "__typename": "Field3", "field": { "value": "aliqua officia", "__typename": "Field4" } } ] }, { "__typename": "Field1", "value": "est amet", "field": { "value": "proident sunt", "__typename": "Field2Problem" }, "fields": [ { "value": "culpa laboris", "__typename": "Field3", "field": { "value": "id laborum", "__typename": "Field4Problem" } }, { "value": "reprehenderit deserunt", "__typename": "Field3Problem", "field": { "value": "veniam mollit", "__typename": "Field4Problem" } }, { "value": "cupidatat adipisicing", "__typename": "Field3", "field": { "value": "nostrud ea", "__typename": "Field4" } }, { "value": "nostrud aute", "__typename": "Field3Problem", "field": { "value": "et reprehenderit", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "minim aute", "field": { "value": "tempor est", "__typename": "Field2Problem" }, "fields": [ { "value": "ex in", "__typename": "Field3Problem", "field": { "value": "duis et", "__typename": "Field4" } }, { "value": "magna ullamco", "__typename": "Field3Problem", "field": { "value": "cillum laborum", "__typename": "Field4Problem" } }, { "value": "culpa non", "__typename": "Field3Problem", "field": { "value": "ad cupidatat", "__typename": "Field4" } }, { "value": "nostrud nostrud", "__typename": "Field3Problem", "field": { "value": "dolore nostrud", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "minim Lorem", "field": { "value": "quis laboris", "__typename": "Field2Problem" }, "fields": [ { "value": "qui aliquip", "__typename": "Field3", "field": { "value": "laboris pariatur", "__typename": "Field4" } }, { "value": "do id", "__typename": "Field3", "field": { "value": "magna velit", "__typename": "Field4" } }, { "value": "cillum ullamco", "__typename": "Field3", "field": { "value": "culpa minim", "__typename": "Field4Problem" } }, { "value": "in deserunt", "__typename": "Field3", "field": { "value": "tempor sint", "__typename": "Field4Problem" } } ] } ] }, { "__typename": "Field", "value": "tempor sit", "fields": [ { "__typename": "Field1Problem", "value": "adipisicing ad", "field": { "value": "nostrud officia", "__typename": "Field2Problem" }, "fields": [ { "value": "pariatur ea", "__typename": "Field3Problem", "field": { "value": "consequat in", "__typename": "Field4Problem" } }, { "value": "esse nulla", "__typename": "Field3Problem", "field": { "value": "quis velit", "__typename": "Field4Problem" } }, { "value": "irure tempor", "__typename": "Field3", "field": { "value": "officia consequat", "__typename": "Field4" } }, { "value": "esse cillum", "__typename": "Field3", "field": { "value": "esse deserunt", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "irure laborum", "field": { "value": "irure consectetur", "__typename": "Field2" }, "fields": [ { "value": "anim esse", "__typename": "Field3", "field": { "value": "nostrud sit", "__typename": "Field4Problem" } }, { "value": "nostrud et", "__typename": "Field3", "field": { "value": "deserunt enim", "__typename": "Field4Problem" } }, { "value": "ipsum eiusmod", "__typename": "Field3Problem", "field": { "value": "pariatur tempor", "__typename": "Field4" } }, { "value": "incididunt ipsum", "__typename": "Field3", "field": { "value": "dolore veniam", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1Problem", "value": "officia et", "field": { "value": "laborum laborum", "__typename": "Field2Problem" }, "fields": [ { "value": "aute nulla", "__typename": "Field3", "field": { "value": "non dolore", "__typename": "Field4" } }, { "value": "id excepteur", "__typename": "Field3Problem", "field": { "value": "non ad", "__typename": "Field4" } }, { "value": "excepteur ullamco", "__typename": "Field3Problem", "field": { "value": "enim in", "__typename": "Field4Problem" } }, { "value": "voluptate id", "__typename": "Field3Problem", "field": { "value": "incididunt aute", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "duis est", "field": { "value": "exercitation dolor", "__typename": "Field2Problem" }, "fields": [ { "value": "commodo tempor", "__typename": "Field3", "field": { "value": "cillum laborum", "__typename": "Field4Problem" } }, { "value": "proident veniam", "__typename": "Field3", "field": { "value": "nulla commodo", "__typename": "Field4Problem" } }, { "value": "et officia", "__typename": "Field3", "field": { "value": "consequat culpa", "__typename": "Field4Problem" } }, { "value": "irure est", "__typename": "Field3Problem", "field": { "value": "excepteur ut", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "esse anim", "field": { "value": "sit anim", "__typename": "Field2" }, "fields": [ { "value": "sint eiusmod", "__typename": "Field3Problem", "field": { "value": "ipsum sint", "__typename": "Field4" } }, { "value": "ex consequat", "__typename": "Field3Problem", "field": { "value": "nisi excepteur", "__typename": "Field4Problem" } }, { "value": "fugiat cupidatat", "__typename": "Field3Problem", "field": { "value": "anim fugiat", "__typename": "Field4" } }, { "value": "sint veniam", "__typename": "Field3Problem", "field": { "value": "incididunt nostrud", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "sint consectetur", "field": { "value": "non pariatur", "__typename": "Field2Problem" }, "fields": [ { "value": "eu et", "__typename": "Field3Problem", "field": { "value": "elit elit", "__typename": "Field4Problem" } }, { "value": "nulla eiusmod", "__typename": "Field3Problem", "field": { "value": "labore in", "__typename": "Field4" } }, { "value": "nisi duis", "__typename": "Field3Problem", "field": { "value": "consectetur nisi", "__typename": "Field4Problem" } }, { "value": "reprehenderit fugiat", "__typename": "Field3Problem", "field": { "value": "nulla cillum", "__typename": "Field4" } } ] }, { "__typename": "Field1Problem", "value": "magna dolor", "field": { "value": "irure occaecat", "__typename": "Field2Problem" }, "fields": [ { "value": "minim incididunt", "__typename": "Field3", "field": { "value": "ullamco esse", "__typename": "Field4" } }, { "value": "officia ut", "__typename": "Field3", "field": { "value": "aliqua do", "__typename": "Field4Problem" } }, { "value": "voluptate ut", "__typename": "Field3", "field": { "value": "consectetur quis", "__typename": "Field4Problem" } }, { "value": "nulla consequat", "__typename": "Field3Problem", "field": { "value": "eiusmod culpa", "__typename": "Field4Problem" } } ] }, { "__typename": "Field1", "value": "cillum ea", "field": { "value": "id ut", "__typename": "Field2Problem" }, "fields": [ { "value": "sint id", "__typename": "Field3", "field": { "value": "elit ex", "__typename": "Field4Problem" } }, { "value": "nisi sit", "__typename": "Field3Problem", "field": { "value": "aliqua irure", "__typename": "Field4" } }, { "value": "mollit do", "__typename": "Field3", "field": { "value": "occaecat eu", "__typename": "Field4" } }, { "value": "magna eiusmod", "__typename": "Field3", "field": { "value": "fugiat veniam", "__typename": "Field4" } } ] } ] } ]; function isObject(obj) { return obj != null && obj.constructor.name === "Object"; } function isProblem(obj) { return obj.__typename.endsWith("Problem"); } function* iteratorRecursive(response) { const data = Array.isArray(response) ? response : [response]; for (const value of data) { if (Array.isArray(value)) yield* iteratorRecursive(value); if (isObject(value)) { if (isProblem(value)) { yield value; } yield* iteratorRecursive(Object.values(value)); } } } function* iteratorNonRecursive(response) { const stack = Array.isArray(response) ? [...response] : [response]; while (stack.length > 0) { const value = stack.shift(); if (Array.isArray(value)) { stack.unshift(...value); } if (isObject(value)) { if (isProblem(value)) { yield value; } stack.unshift(...Object.values(value)); } } } function commonRecursive(response) { const data = Array.isArray(response) ? response : [response]; const result = []; for (const value of data) { if (Array.isArray(value)) result.push(...commonRecursive(value)); if (isObject(value)) { if (isProblem(value)) { result.push(value); } result.push(...commonRecursive(Object.values(value))); } } return result; } function commonNonRecursive(response) { const stack = Array.isArray(response) ? [...response] : [response]; const result = []; while (stack.length > 0) { const value = stack.shift(); if (Array.isArray(value)) { stack.unshift(...value); } if (isObject(value)) { if (isProblem(value)) { result.push(value); } stack.unshift(...Object.values(value)); } } return result; }
Tests:
Recursive Iterator
Array.from(iteratorRecursive(MOCK))
NonRecursive Iterator
Array.from(iteratorNonRecursive(MOCK))
Recursive Common
commonRecursive(MOCK)
NonRecursive Common
commonNonRecursive(MOCK)