Skip to content

Repository files navigation

javascript-unwind

Current npm versionCurrent npm download countCircleCICompatible with ES5 and greater

A very simple native function for unwinding a collection by a property, like MongoDB's $unwind function.

Features

  • This function is immutable. Your original collection doesn't change.
  • It works for both primitives and complex values.
  • It works for nested arrays, using dot-notation. Like a.b.c.
  • It works in ES5-compatible environments, without transpiling.
  • Typings available for TypeScript.

Installation

$ npm i javascript-unwind --save

How to use

Shallow level

constunwind=require('javascript-unwind');constcollection=[{a: [{x: 1},{x: 2}],b: 123},{a: [{x: 3},{x: 4}],b: 785,c: 368},];console.log(unwind(collection,'a'));

Output:

[{a: {x: 1},b: 123},{a: {x: 2},b: 123},{a: {x: 3},b: 785,c: 368},{a: {x: 4},b: 785,c: 368}]

Deep level

constunwind=require('javascript-unwind');constcollection=[{name: 'a1',b: [{name: 'b1',c: [{name: 'c1'},{name: 'c2'}]},{name: 'b2',c: [{name: 'c3'},{name: 'c4'}]},],},{name: 'a2',b: [{name: 'b3',c: [{name: 'c4'},{name: 'c5'}]},{name: 'b4',c: [{name: 'c6'},{name: 'c7'}]}]}];console.log(unwind(collection,'b.c'));

Output:

[{"name":"a1","b":{"name":"b1","c":{"name":"c1"}}},{"name":"a1","b":{"name":"b1","c":{"name":"c2"}}},{"name":"a1","b":{"name":"b2","c":{"name":"c3"}}},{"name":"a1","b":{"name":"b2","c":{"name":"c4"}}},{"name":"a2","b":{"name":"b3","c":{"name":"c4"}}},{"name":"a2","b":{"name":"b3","c":{"name":"c5"}}},{"name":"a2","b":{"name":"b4","c":{"name":"c6"}}},{"name":"a2","b":{"name":"b4","c":{"name":"c7"}}}]

Roadmap and Bugs

See Issues.

About

A very simple native function for unwinding a collection by a property, like MongoDB's $unwind function.

Topics

Resources

Stars

8 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages