Skip to content

Instantly share code, notes, and snippets.

@gearsandcode
Last active June 22, 2016 02:13
Show Gist options
  • Save gearsandcode/a1f21f9f227086f8b458 to your computer and use it in GitHub Desktop.
Save gearsandcode/a1f21f9f227086f8b458 to your computer and use it in GitHub Desktop.
partition array filter - distribute an array into columns #angularjs #array #partition #columns
Example usage: <!-- ngRepeat: thing in things | limitTo:6 | partition:3 -->
limitTo = max items to return
partition = how many arrays
.filter('partition', [ '$cacheFactory', function($cacheFactory) {
var arrayCache = $cacheFactory('partition');
var filter = function(arr, size) {
if (!arr) { return; }
var newArr = [];
for (var i=0; i<arr.length; i+=size) {
newArr.push(arr.slice(i, i+size));
}
var cachedParts;
var arrString = JSON.stringify(arr);
cachedParts = arrayCache.get(arrString+size);
if (JSON.stringify(cachedParts) === JSON.stringify(newArr)) {
return cachedParts;
}
arrayCache.put(arrString+size, newArr);
return newArr;
};
return filter;
}])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment