Socket
Socket
Sign inDemoInstall

sym-diff-by-props

Package Overview
Dependencies
0
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    sym-diff-by-props

Find the symmetric difference of two arrays of objects by comparing a a set of shared properties


Version published
Weekly downloads
5
increased by400%
Maintainers
1
Install size
12.6 kB
Created
Weekly downloads
 

Readme

Source

Sym Diff By Props

Find the symmetric difference of two arrays of objects by comparing a a set of shared properties

Why

Because before I was using ramda like so to calculate a symmetric difference: symmetricDifferenceWith(eqBy(props['a', b'])). Turns out that when either one of the input lists has more then ~ 100 elements, ramda starts to get really slow when calculating the symmetric difference. I love ramda but the performance of this usage of ramda became a pain point for me recently and so I decided to roll my own with a specific focus on solving the symmetric difference between two arrays of objects by analysing a list of shared properties.

I have included some basic tests if you want to see for yourself just how much slower ramda takes for this with marignally larger arrays: Clone the repo, run yarn or npm i, then yarn test or npm t.

As a nice side benefit, this package is dependency-free. No getting tons of extra packages shoehorned in to your project just because you want to use this one.

Usage

npm i sym-diff-by-props or yarn add sym-diff-by-props then:

const symDiffByProps = require('sym-diff-by-props');


const list1 = [{ a: 6, b: 'foo' }, { a: 3, b: 'adderall' }, { a: 5, b: 'chocolate' }];

const list2 = [{ a: 3, b: 'adx' }, { a: 6, b: 'foo' }, { a: 5, b: 'chocolate' }, { a: 3, b: 'adderall' }, { a: 6, b: 'foo' }, { a: 50, b: 'crazy' }];

const symDiff = symDiffByProps(['a', 'b'], list1, list2);

console.log(symDiff); // [{a: 3, b: 'adx'}, {a: 50, b: 'crazy'}]

FAQs

Last updated on 08 Dec 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc