Array.from converts anything iterable

Converting a NodeList or an arguments object into a real array has been Array.prototype.slice.call(x) for a decade — an incantation that works because of how slice was specified rather than because it means anything. ES6 gives it a name.

// today
var items = Array.prototype.slice.call(document.querySelectorAll('li'));

// ES6
var items = Array.from(document.querySelectorAll('li'));
var sizes = Array.from(nodes, function (n) { return n.offsetHeight; });

The second argument is a map function, which saves a separate pass and is the part most introductions omit. The spec is still at candidate stage and native support is thin — Firefox has it, Chrome does not yet — so this is transpiler or polyfill territory for now. Worth adopting anyway: the transpiled output is the slice.call you were writing by hand.