Skip to content

surplus/array

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SArray

Convenient array signals for S.js.

SArray adds utility methods to S signals carrying arrays. These utility methods parallel the standard ES3/5/6 array methods.

// transformations without SArray
var arr = S.data([1, 2, 3]),
  mapped = S(() => arr().map((x) => x * 2)),
  filtered = S(() => arr().filter((x) => x > 2));

// transformations with SArray
var arr = SArray([1, 2, 3]),
  mapped = arr.map((x) => x * 2), // arr() now has array methods
  filtered = arr.filter((x) => x > 2);

// mutations without SArray
var tmp = S.sample(arr).slice(0);
tmp.push(4);
arr(tmp);

// mutations with SArray
arr.push(4);

// SArray methods also return SArrays
var mappedAndFiltered = arr.map((x) => x * 2).filter((x) => x > 2);

// Any array-carrying signal can be 'lifted' to create an SArray
var plain = S.data([1, 2, 3]),
  arr = SArray.lift(plain),
  mapped = arr.map((x) => x * 2); // etc

// When an array signal changes, map() will re-use prior computations
// for new items that === the old.
var rands = arr.map(() => Math.random().toFixed(2));
rands(); // ["0.83", "0.75", "0.77"]
arr.push(4);
rands(); // ["0.83", "0.75", "0.77", "0.25"] unchanged values reused

For a full list of methods and their signatures, consult index.ts.

About

Utility methods for working with arrays in S.js / Surplus

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 50.9%
  • JavaScript 49.1%