JSPM

object-array-filter

1.0.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 10
  • Score
    100M100P100Q41063F
  • License ISC

Filters an array of objects by matching a field's value in each object to a search term. Returns filtered array

Package Exports

  • object-array-filter

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (object-array-filter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

object-array-filter

Explanation

Filters an array of objects by compariing a field's value in each object to a search term. The following operators can be used: "eq" | "ne" | "lt" | "gt" | "lte" | "gte". Returns a promise of a filtered array. Field values must be strings, numbers or booleans.

Installation & Usage

Run npm install --save object-array-filter

const find = require('object-array-filter');

/**
 * @param search object
 * @param array an array of object with the same properties
 * @param key <optional> object key to perform comparison.
 * @param comparison <optional> comparison operator to use.
 * @returns {Promise<object[] | []>} Returns filtered array
 */



const testArray = [
  { color: "black", size: 2, big: false },
  { color: "pink", size: 3, big: false },
  { color: "black", size: 3, big: false },
  { color: "pink", size: 14, big: true}
];

const size = 3;
const color = 'black';
const big = true;

const testing = async () => {
  try {
    const filteredSize = await find.default({ size }, testArray);
    const filteredColor = await find.default({ color }, testArray);
    const filteredNotBig = await find.default({ big }, testArray);
    console.log({ filteredSize, filteredColor, filteredBig });
  } catch (error) {
    console.log(error);
  }
};

//Run function
testing();

/* expected output: {
  filteredSize: [
    { color: 'pink', size: 3, big: false },
    { color: 'black', size: 3, big: false }
  ],
  filteredColor: [
    { color: 'black', size: 2, big: false },
    { color: 'black', size: 3, big: false }
  ],
  filteredBig: [ { color: 'pink', size: 14, big: true } ]
} */

/* 
NB: Variable name should match the name of the field in the object. 
If the variable name does not match the field name, the following syntax must be used
 */
const color2 = 'pink'
find.default({ color2 }, testArray, "color")
  .then((filtered) => console.log(filtered))
  .catch((error) => console.log(error));

/* expected output: [ { color: 'pink', size: 3 }, { color: 'pink', size: 14 } ] */

//NB: The default operator is 'eq'. If you wish to use another operator, below are some examples.
const testingOperators = async () => {
  try {
    const filteredLessThanOrEqual3 = await find.default({ size }, testArray, "size", "lte");
    const filteredGreaterThan3 = await find.default({ size }, testArray, "size", "gt");
    const filteredNotBlack = await find.default({ color }, testArray, "color", "ne");
    const filteredNotBig = await find.default({ big }, testArray, "big", "ne");
    console.log({ filteredLessThanOrEqual3, filteredGreaterThan3, filteredNotBlack, filteredNotBig });
  } catch (error) {
    console.log(error);
  }
};

testingOperators();

/* expected output: {
  filteredLessThanOrEqual3: [
    { color: 'black', size: 2, big: false },
    { color: 'pink', size: 3, big: false },
    { color: 'black', size: 3, big: false }
  ],
  filteredGreaterThan3: [ { color: 'pink', size: 14, big: true } ],
  filteredNotBlack: [
    { color: 'pink', size: 3, big: false },
    { color: 'pink', size: 14, big: true }
  ],
  filteredNotBig: [
    { color: 'black', size: 2, big: false },
    { color: 'pink', size: 3, big: false },
    { color: 'black', size: 3, big: false }
  ]
} */

TypeScript Usage

import find from 'object-array-filter';

/**
 * @param search object
 * @param array an array of object with the same properties
 * @param key <optional> object key to perform comparison.
 * @param comparison <optional> comparison operator to use.
 * @returns {Promise<object[] | []>} Returns filtered array
 */



const testArray = [
  { color: "black", size: 2, big: false },
  { color: "pink", size: 3, big: false },
  { color: "black", size: 3, big: false },
  { color: "pink", size: 14, big: true}
];

const size = 3;
const color = 'black';
const big = true;

const testing = async () => {
  try {
    const filteredSize = await find({ size }, testArray);
    const filteredColor = await find({ color }, testArray);
    const filteredNotBig = await find({ big }, testArray);
    console.log({ filteredSize, filteredColor, filteredBig });
  } catch (error) {
    console.log(error);
  }
};

//Run function
testing();

/* expected output: {
  filteredSize: [
    { color: 'pink', size: 3, big: false },
    { color: 'black', size: 3, big: false }
  ],
  filteredColor: [
    { color: 'black', size: 2, big: false },
    { color: 'black', size: 3, big: false }
  ],
  filteredBig: [ { color: 'pink', size: 14, big: true } ]
} */