ага. Там вся прелесть раскрывается, когда в es6 его используешь:
1) нужно, чтобы браузер поддерживал
for...of,
Symbol.iterator (работает в последних версиях браузеров)
<script src="http://nervgh.github.io/js/recursive-iterator.min.js"></script>
<script>
var mazePacman1 = [
[1, 2, 3, 4, 5],
[2, 1, 4, 5, 5]
];
// item = state.value
for(var item of new RecursiveIterator(mazePacman1)) {
if (item.node === 2) item.parent[item.key] = 90;
}
alert(JSON.stringify(mazePacman1));
</script>
2) нужно, чтобы браузер поддерживал
for...of,
Symbol.iterator,
деструктивное присваивание
<script src="http://nervgh.github.io/js/recursive-iterator.min.js"></script>
<script>
var mazePacman1 = [
[1, 2, 3, 4, 5],
[2, 1, 4, 5, 5]
];
for(var {parent, node, key} of new RecursiveIterator(mazePacman1)) {
if (node === 2) parent[key] = 90;
}
alert(JSON.stringify(mazePacman1));
</script>
http://kangax.github.io/compat-table/es6/