JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://nervgh.github.io/js/recursive-iterator.min.js"></script>

JavaScript

var arr = [1,2,3];

for(var item of new RecursiveIterator(arr, 1, true, 1)) {
    arr.length = 0;
    console.log('arr=', arr, 'item=', item.node);
}

var object = {a:true, b:NaN};

for(var item of new RecursiveIterator(object, 1, true, 1)) {
    object = {};
    console.log('object=', object, 'item=', item.node);
}