Skip to content

Instantly share code, notes, and snippets.

View suissa's full-sized avatar
🏠
Working from home

Jean Carlo Nascimento suissa

🏠
Working from home
  • Oncorithms Institute
  • Brasil
View GitHub Profile
@suissa
suissa / deepFreeze.mdn.js
Created January 10, 2019 22:21
deepFreeze MDN
module.exports = function deepFreeze (o) {
Object.freeze(o);
Object.getOwnPropertyNames(o).forEach(function (prop) {
if (o.hasOwnProperty(prop)
&& o[prop] !== null
&& (typeof o[prop] === "object" || typeof o[prop] === "function")
&& !Object.isFrozen(o[prop])) {
deepFreeze(o[prop]);
}
@suissa
suissa / groupBy.semantic.js
Created September 9, 2018 06:12
JavaScript - groupby - mais semantico eh nois q voa bruxaooooo
const group = (obj, field) => obj[field]
const addValue = (result, obj, field) =>
result[obj[field]] || []
const addToGroup = (result, obj, field) =>
[...(addValue(result, obj, field)), obj]
const toNewGroupUsing = (field) => (result, obj) => ({
...result,
@suissa
suissa / filter09.js
Created September 9, 2018 05:45
JavaScript - groupby - filter 09
const toNewGroup = (field) => (result, obj) => ({
...result,
[obj[field]]: [...(result[obj[field]] || []), obj]
})
const group = (list) => (field) =>
list.reduce(toNewGroup(field), {})
const groupBy = group(list)
@suissa
suissa / filter08.js
Last active August 29, 2018 21:31
JavaScript - groupby - filter 08
const toNewGroup = (field) => (result, obj) => ({
...result,
[obj[field]]: [...(result[obj[field]] || []), obj]
})
const groupBy = (list, field) =>
list.reduce(toNewGroup(field), {})
console.log(groupBy(list, "level"))
@suissa
suissa / filter07.js
Last active August 29, 2018 21:31
JavaScript - groupby - filter 07
const toNewGroup = (field) => (result, obj) => ({
...result,
[obj[field]]: [...(result[obj[field]] || []), obj]
})
const groups = list.reduce(toNewGroup("level"), {})
@suissa
suissa / filter06.js
Last active August 29, 2018 21:31
JavaScript - groupby - filter 06
const toNewGroup = (field) => (result, obj) => {
result[obj[field]] = (!result[obj[field]])
? [obj]
: [...result[obj[field]], obj]
return result
}
const groups = list.reduce(toNewGroup("level"), {})
console.log(groups)
@suissa
suissa / filter05.js
Last active August 29, 2018 21:31
JavaScript - groupby - filter 05
const toNewGroup = (field) => (result, obj) => {
result[field] = (!result[field])
? [obj]
: [...result[field], obj]
return result
}
const groups = list.reduce(toNewGroup("level"), {})
console.log(groups)
@suissa
suissa / filter04.js
Created August 26, 2018 06:39
JavaScript - groupby - filter 04
{ senior:
[ { id: 1,
name: 'Suissa',
active: true,
level: 'senior',
tags: [Array] },
{ id: 2,
name: 'Bella',
active: true,
level: 'senior',
@suissa
suissa / filter03.js
Created August 26, 2018 06:35
JavaScript - groupby - filter 03
const plenos = list.filter(toGroup("level", "pleno"))
console.log({plenos})
/**
{ plenos:
[ { id: 4,
name: 'John',
level: 'pleno',
active: false,
tags: [Array] } ] }
@suissa
suissa / filter02.js
Created August 26, 2018 06:30
JavaScript - groupby - filter 02
const toGroup = (field, value) => (obj) =>
obj[field] === value
const filtered = list.filter(toGroup("level", "senior"))
console.log({filtered})
/**
{ filtered:
[ { id: 1,
name: 'Suissa',