Skip to content

Avocarrot/query-objects

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

query-objects

NPM

Purpose

A utility library which filters objects from an array of objects based on a set of filter conditions.

  const queryable = require('query-objects');

  const users = [
    {
      firstName: 'George',
      lastName: 'Eracleous',
      age: 28
    },
    {
      firstName: 'Erica',
      lastName: 'Archer',
      age: 50
    },
    {
      firstName: 'Leo',
      lastName: 'Andrews',
      age: 20
    }
  ];

  const filters = [
    {
      field: 'age',
      value: 30,
      operator: 'lt'
    },
    {
      field: 'firstName',
      value: 'Erica',
      operator: 'equals'
    }
  ];

  // Filter all users that are less than 30 years old AND their first name is Erica
  const res = queryable(users).and(filters);

  // Filter all users that are less than 30 years old OR their first name is Erica
  const res = queryable(users).or(filters);

Contents

Installation

npm install filter-objects

Usage

  1. Create a queryable object using queryable(arr) where arr is the array of objects you want to query.
const q = queryable(arr);
  1. Finally get the result array using:
q.and(filters); //returns an array of all objects in `arr` that satisfy EVERY filter

q.or(filters); //returns an array of all objects in `arr` that satisfy SOME of the filters

Filters

field - The name of the property we will filter on

value - The value of the property we will filter on

operator - The filter operator. Supported operators equals, contains, notcontains, gt, gte, lt, lte, ne

matchMissing - If true the filter will be satisfied even if field property is not present on the object. Default is false.

matchEmpty - If true the filter will be satisfied even if value property is empty. Empty values are [], undefined, null, '' and {}. Default is false.

Contributing

This project is work in progress and we'd love more people contributing to it.

  1. Fork the repo
  2. Apply your changes
  3. Write tests
  4. Submit your pull request

For feedback or suggestions you can drop us a line at support@avocarrot.com

About

Given an array of objects returns those that satisfy some or all desired filters.

Resources

License

Stars

Watchers

Forks

Packages

No packages published