Join egghead, unlock knowledge.

Want more egghead?

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock This Lesson
Become a member
to unlock all features

Level Up!

Access all courses & lessons on egghead today and lock-in your price for life.


    Converting an array-like object into an Array with Array.from()


    Array.from() lets you convert an "iterable" object (AKA an array-like object) to an array. In this lesson, we go over grabbing DOM nodes and turing them into an array so that we can use methods like Array.filter() and Array.forEach() on them.



    Become a Member to view code

    You must be a Pro Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    orLog In




    Here we have a list of prices that belong to products inside of a store. We'd like to highlight the prices that are less than $10, and we don't have access to the server code to be able to do that on the server. So we're going to do it with JavaScript on the client. Let's grab our products and store them in a variable called products, and we'll do that by saying document.queryselector = all, and we know that each of these has a class name of product, so we'll use that to grab them.

    Then let's log these out, see what they contain. So we can see that we have our products and if we open this up, we can see that they are of the type nodelist, and the problem with the nodelist is that it's like an array but it's not an array, so it doesn't have all of the typical array methods that we want to use like filter, and foreach, and reduce. What we can do is we can convert this nodelist into an array, and then we'll be able to use the array methods on the lists.

    In the past there's been a lot of hackey ways to do this, but now with ECMAScript 2015 we have a native way to do it with the array.from method. So I'm going to go up here and wrap my node list here with array.from. If we log this out, we'll be able to see if we open this up again, that it's now of type array. Now we can use the array methods to solve our original problem of highlighting numbers that are less than 10 in the list.

    What I'm going to do now is say products, and we'll filter those products, and we'll filter if the product, the number inside of that product, supply parse float and we'll grab the products' innerHTML, and we'll check if it is less than $10. Then when we get that list of the products that are less than $10, we're going to foreach over them, and for each of those products, we're going to say and we'll set that equal to red.

    Now we're highlighting the items that are less than $10. So you can see that being able to convert a nodelist or any other type of iterable collection into an array can be very useful.