JSFiddle - React, Tailwind, and code Playground

by Darby Rathbone

HTML

{{test}}
<input type="text" value="{{test]}">

JavaScript

var all = [].slice.call(document.childNodes);
var b = true;
while (b) {
    b = false;
    all = all.map(function loop(e, i, a) {
        if (Array.isArray(e)) {
            return e.map(loop);
        }
        if (e.childNodes.length) {
            b = true;
            return [].slice.call(e.childNodes);
        }
        return e;
    });
}
console.log(all);

console.log(flattenArray(all));

function arrayEqual(a, b) {
    var i = Math.max(a.length, b.length, 1);
    while (i-- >= 0 && a[i] === b[i]);
    return (i === -2);
}

function flattenArray(arr) {
    var r = [];

    while (!arrayEqual(r, arr)) {
        r = arr;
        arr = [].concat.apply([], arr);
    }
    return arr;
}