group-array
Advanced tools
Comparing version 0.2.0 to 0.3.0
52
index.js
@@ -13,3 +13,3 @@ /*! | ||
function groupArray(arr, props) { | ||
function groupFn(arr, props) { | ||
if (arr == null) { | ||
@@ -36,3 +36,3 @@ return []; | ||
function groupBy(arr, prop) { | ||
function groupBy(arr, prop, key) { | ||
var len = arr.length, i = -1; | ||
@@ -43,24 +43,20 @@ var groups = {}; | ||
var obj = arr[i]; | ||
var key; | ||
var val; | ||
// allow a function to modify the object | ||
// and/or return a key to use | ||
// and/or return a val to use | ||
if (typeof prop === 'function') { | ||
key = prop.call(groups, obj); | ||
val = prop.call(groups, obj, key); | ||
} else { | ||
key = get(obj, prop); | ||
val = get(obj, prop); | ||
} | ||
if (typeof key === 'string') { | ||
groups[key] = groups[key] || []; | ||
groups[key].push(obj); | ||
} else if (typeOf(key) === 'object') { | ||
var value = key; | ||
for (var k in value) { | ||
if (value.hasOwnProperty(k)) { | ||
groups[k] = groups[k] || []; | ||
groups[k].push(obj); | ||
} | ||
} | ||
} else if (typeOf(key) === 'function') { | ||
if (typeof val === 'string') { | ||
groups[val] = groups[val] || []; | ||
groups[val].push(obj); | ||
} else if (typeOf(val) === 'object') { | ||
groupObject(groups, obj, val); | ||
} else if (Array.isArray(val)) { | ||
groupArray(groups, obj, val); | ||
} else if (typeOf(val) === 'function') { | ||
throw new Error('group-array expects group keys to be strings, objects or undefined: ' + key); | ||
@@ -72,2 +68,18 @@ } | ||
function groupObject(groups, obj, val) { | ||
for (var k in val) { | ||
if (val.hasOwnProperty(k)) { | ||
groups[k] = groups[k] || []; | ||
groups[k].push(obj); | ||
} | ||
} | ||
} | ||
function groupArray(groups, obj, val) { | ||
val.forEach(function (item) { | ||
groups[item] = groups[item] || []; | ||
groups[item].push(obj); | ||
}); | ||
} | ||
function subGroup(groups, prop) { | ||
@@ -80,3 +92,3 @@ for (var key in groups) { | ||
} else { | ||
groups[key] = groupArray(val, prop); | ||
groups[key] = groupBy(val, prop, key); | ||
} | ||
@@ -100,2 +112,2 @@ } | ||
module.exports = groupArray; | ||
module.exports = groupFn; |
{ | ||
"name": "group-array", | ||
"description": "Group array of objects into lists.", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"homepage": "https://github.com/doowb/group-array", | ||
@@ -6,0 +6,0 @@ "author": "Brian Woodward (https://github.com/doowb)", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10097
89