yaenumerable v1.0.1
#YAEnumerable
Yet Another Enumerable Java Script Framework
##Purpose
To create and maintain a linq type JS framework. See Credits/Other Frameworks for alternatives.
##Install
npm install yaenumerable
##Example Each selector will at a minimum return an item and the index of the item. The index is always the last item returned in the callback. See tests for additional examples.
###where Condition
var enumerable = require("yaenumerable");
var anArray = [{a:1},{a:2},{a:3}];
//aValues will now be [{a:2},{a:3}]
var aValues = enumerable.fromArray(anArray)
.where(function(item){return item.a > 1;})
.toArray();
###select
var enumerable = require("yaenumerable");
var anArray = [{a:1},{a:2},{a:3}];
//aValues will now be [1,2,3]
var aValues = enumerable.fromArray(anArray)
.select( function(item){ return item.a; } )
.toArray();
###selectMany Allows you to flatten an array
var enumerable = require("yaenumerable");
var anArray = [ {a:[1,2,3]}, {a:[4,5,6]}, {a:[7,8,9]} ];
//Will return: [1,2,3,4,5,6,7,8,9]
var flattenedArray = enumerable.selectMany(function(item){return item.a})
.toArray();
###first
var enumerable = require("yaenumerable");
var anArray = [{a:1},{a:2},{a:3}];
//if no function specified will return first item:{a:1}
var firstObject = enumerable.fromArray(anArray).first();
//Since function is specfied to return a, will return 1
var firstA = enumerable.fromArray(anArray)
.first(function(item){return item.a;});
###sum
var enumerable = require("yaenumerable");
//sum without a selector
//In this case it will return 6
var sum = enumerable.fromArray([1,2,3]).sum();
//When specified with a selector will return the sum of that item:
//In this case it will return 6
var sumOfA = enumerable.fromArray([{a:1},{a:2},{a:3}])
.sum(function(item){return item.a;});
###count count items in enumerable. Example use is with an enumerable
var enumerable = require("yaenumerable");
var anArray = [1,2,3];
//Will return 2
var count = enumerable.fromArray([1,2,3])
.where(function(item){return item > 1;})
.count();
###any Determines if any items meet a condtion
var enumerable = require("yaenumerable");
var anArray = [1,2,3];
//Will return true
var hasItemGreaterThan1 = enumerable.fromArray([1,2,3])
.any(function(item){return item > 1;});
//Can use with a selector as well
var hasItemAGreaterThan1 = enumerable.fromArray([{a:1},{a:2},{a:3}])
.any(function(item){return item.a > 1;});
###forEach
var enumerable = require("yaenumerable");
var anArray = [{a:1},{a:2},{a:3}];
//aValues will now be [1,2,3]
var aValues = enumerable.fromArray(anArray)
.forEach( function(item){/*Do something useful*/})
.toArray();
###asyncForEach Allows you to make async calls on each item in an array and get the results of all calls when each call is complete.
var enumerable = require("yaenumerable");
var anArray = [{a:1},{a:2},{a:3}];
var longProcess = function(item, onLongProcessComplete){
//Some long process
var result = item;
onLongProcessComplete(result);
};
enumerable.fromArray(anArray)
.asyncForEach(longProcess,
function(results){
//results is an array with each updated item
onComplete(results);
});
###For additional examples see the tests. To run them:
npm test
##Credits/Other Frameworks