Filter Object in Javascript - Veltris

Filter Object in Javascript

February 8, 2022 | Arpit Jain

    In Javascript, There are many ways to filter the Object.

    1. Using reduce & Object.keys
    2. Using reduce, Object.keys & Object.assign
    3. Using map & spread syntax instead of reduce
    4. Using Object.entries & Object.fromEntries
    5. Using lodash.js

    Using reduce & Object.keys

    Object.filter = (obj, predicate) => 
        Object.keys(obj)
              .filter( key => predicate(obj[key]) )
              .reduce( (res, key) => (res[key] = obj[key], res), {} );
    // Example use:
    var scores = {
        John: 2, Sarah: 3, Janet: 1
    };
    var filtered = Object.filter(scores, score => score > 1); 
    console.log(filtered);

    Using reduce, Object.keys & Object.assign

    Object.filter = (obj, predicate) => 
        Object.keys(obj)
              .filter( key => predicate(obj[key]) )
              .reduce( (res, key) => Object.assign(res, { [key]: obj[key] }), {} );
    // Example use:
    var scores = {
        John: 2, Sarah: 3, Janet: 1
    };
    var filtered = Object.filter(scores, score => score > 1); 
    console.log(filtered);

    Using map & spread syntax instead of reduce

    Object.filter = (obj, predicate) => 
        Object.assign(...Object.keys(obj)
                        .filter( key => predicate(obj[key]) )
                        .map( key => ({ [key]: obj[key] }) ) );
    // Example use:
    var scores = {
        John: 2, Sarah: 3, Janet: 1
    };
    var filtered = Object.filter(scores, score => score > 1); 
    console.log(filtered);

    Using Object.entries & Object.fromEntries

    Object.filter = (obj, predicate) => 
                      Object.fromEntries(Object.entries(obj).filter(predicate));
    // Example use:
    var scores = {
        John: 2, Sarah: 3, Janet: 1
    };
    var filtered = Object.filter(scores, ([name, score]) => score > 1);

    Using Lodash.js

    _.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
    

    Related Articles