Skip to content

Instantly share code, notes, and snippets.

@gabhi
Last active August 29, 2015 14:17
Show Gist options
  • Save gabhi/b6da0a6d4620c99d14e7 to your computer and use it in GitHub Desktop.
Save gabhi/b6da0a6d4620c99d14e7 to your computer and use it in GitHub Desktop.
javascript group by, filter implementation
var list = [
{name: "1", lastname: "foo1", age: "16"},
{name: "2", lastname: "foo", age: "13"},
{name: "3", lastname: "foo1", age: "11"},
{name: "4", lastname: "foo", age: "11"},
{name: "5", lastname: "foo1", age: "16"},
{name: "6", lastname: "foo", age: "16"},
{name: "7", lastname: "foo1", age: "13"},
{name: "8", lastname: "foo1", age: "16"},
{name: "9", lastname: "foo", age: "13"},
{name: "0", lastname: "foo", age: "16"}
];
var result = [];
list.forEach(function(item, arr, index){
if(item.age !== "16") {
result.push(item);
}
});
console.log(result);
//condition = [16,13,11]
//op = true/false
function filter(list, property, condition, op) {
var result = [];
list.forEach(function(item, arr, index) {
condition.forEach(function (cond) {
if ( (item[property] === cond) === op ) {
result.push(item);
}
});
});
return result;
}
//
//[
groupBy(list, property){}
"16":[{}],
"13":[{}],
"11":[{}]
]
function groupBy(list, property){
var result= [],
holder = {};
list.forEach(function (item, index, ar){
if (holder[item[property]]) {
holder[item[property]].push(item);
} else {
holder[item[property]] = [item];
}
});
return holder;
}
var list = [
{name: "1", lastname: "foo1", age: "16"},
{name: "2", lastname: "foo", age: "13"},
{name: "3", lastname: "foo1", age: "11"},
{name: "4", lastname: "foo", age: "11"},
{name: "5", lastname: "foo1", age: "16"},
{name: "6", lastname: "foo", age: "16"},
{name: "7", lastname: "foo1", age: "13"},
{name: "8", lastname: "foo1", age: "16"},
{name: "9", lastname: "foo", age: "13"},
{name: "0", lastname: "foo", age: "16"}
];
function groupByCounts(list, property){
var result= [],
holder = {};
list.forEach(function (item, index, ar){
if (holder[item[property]]) {
holder[item[property]]++;
} else {
holder[item[property]] = 1;
}
});
return holder;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment