Notebooks 2.0 is here.
Read the preview announcement
Platform
Resources
Pricing
Sign in
Get started
Peter Varholak
Workspace
Fork
Published
By
Peter Varholak
Edited
Apr 16, 2019
1 fork
3 stars
Insert cell
Insert cell
Insert cell
sum
=
(
a
,
b
)
=>
a
+
b
Insert cell
sum
(
10
,
2
)
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
{
// Not `x += 1` (you would need to use "let" keyword anyway)
const
x
=
1
const
x1
=
x
+
1
return
x1
}
Insert cell
Insert cell
// Not `oldArr.push(5)`
[
...
oldArr
,
5
]
Insert cell
Insert cell
// Not `oldArr.unshift(0)`
[
0
,
...
oldArr
]
Insert cell
Insert cell
// Not `oldObj.new = 'quox'`
(
{
...
oldObj
,
new
:
'quox'
}
)
Insert cell
Insert cell
// Not `oldObj.label = 'Potato'`
(
{
...
oldObj
,
label
:
'Potato'
}
)
Insert cell
Insert cell
{
// Not `delete oldObj.z`
const
{
z
,
...
newObj
}
=
oldObj
return
newObj
}
Insert cell
Insert cell
subtract
=
(
a
,
b
)
=>
a
-
b
Insert cell
multiply
=
(
a
,
b
)
=>
a
*
b
Insert cell
divide
=
(
a
,
b
)
=>
a
/
b
Insert cell
Insert cell
Insert cell
pass10
=
(
fn
,
b
)
=>
fn
(
10
,
b
)
Insert cell
Insert cell
pass10
(
sum
,
5
)
Insert cell
pass10
(
multiply
,
5
)
Insert cell
Insert cell
pass10
(
(
a
,
b
)
=>
(
20
+
a
)
/
b
,
5
)
Insert cell
Insert cell
cSum
=
a
=>
b
=>
a
+
b
Insert cell
cSubtract
=
a
=>
b
=>
a
-
b
Insert cell
cMultiply
=
a
=>
b
=>
a
*
b
Insert cell
cDivide
=
a
=>
b
=>
a
/
b
Insert cell
Insert cell
cSum
(
10
)
(
2
)
Insert cell
Insert cell
{
const
add5
=
cSum
(
5
)
return
[
add5
(
5
)
,
add5
(
2
)
,
add5
(
100
)
]
}
Insert cell
Insert cell
Insert cell
{
let
mediumProducts
=
[
]
for
(
let
i
=
0
;
i
<
products
.
length
;
i
++
)
{
let
currentProduct
=
products
[
i
]
if
(
currentProduct
.
size
===
"M"
)
{
mediumProducts
.
push
(
currentProduct
)
}
}
return
mediumProducts
}
Insert cell
Insert cell
products
.
filter
(
product
=>
product
.
size
===
"M"
)
Insert cell
Insert cell
isMedium
=
product
=>
product
.
size
===
"M"
Insert cell
products
.
filter
(
isMedium
)
Insert cell
Insert cell
getProductName
=
product
=>
product
.
name
Insert cell
Insert cell
products
.
map
(
getProductName
)
Insert cell
Insert cell
getName
=
(
{
name
}
)
=>
name
Insert cell
Insert cell
products
.
map
(
getName
)
Insert cell
Insert cell
customers
.
map
(
getName
)
Insert cell
Insert cell
products
.
reduce
(
(
acc
,
{
id
,
sex
,
size
,
type
}
)
=>
(
{
...
acc
,
[
id
]
:
`${
type
} - ${
sex
} (${
size
})`
}
)
,
{
}
)
Insert cell
Insert cell
Insert cell
rGetName
=
R
.
prop
(
'name'
)
Insert cell
R
.
map
(
rGetName
,
customers
)
Insert cell
Insert cell
Insert cell
{
let
output
=
{
}
for
(
let
i
=
0
;
i
<
customers
.
length
;
i
++
)
{
const
{
name
:
cName
,
sex
:
cSex
,
size
:
cSize
}
=
customers
[
i
]
let
productNames
=
[
]
for
(
let
j
=
0
;
j
<
products
.
length
;
j
++
)
{
const
{
name
:
pName
,
sex
:
pSex
,
size
:
pSize
}
=
products
[
j
]
if
(
cSex
===
pSex
&&
cSize
===
pSize
)
{
productNames
.
push
(
pName
)
}
}
output
[
cName
.
toUpperCase
(
)
]
=
productNames
}
return
output
}
Insert cell
Insert cell
customers
.
reduce
(
(
acc
,
{
name
:
cName
,
sex
:
cSex
,
size
:
cSize
}
)
=>
{
const
productNames
=
products
.
filter
(
(
{
sex
:
pSex
,
size
:
pSize
}
)
=>
cSex
===
pSex
&&
cSize
===
pSize
)
.
map
(
R
.
prop
(
'name'
)
)
return
{
...
acc
,
[
R
.
toUpper
(
cName
)
]
:
productNames
}
}
,
{
}
)
Insert cell
Insert cell
{
const
extractSexSize
=
R
.
pick
(
[
'sex'
,
'size'
]
)
const
isSameSexSize
=
obj1
=>
obj2
=>
R
.
equals
(
extractSexSize
(
obj1
)
,
extractSexSize
(
obj2
)
)
const
filterProducts
=
nProducts
=>
nCustomer
=>
R
.
filter
(
isSameSexSize
(
nCustomer
)
,
nProducts
)
const
getName
=
R
.
prop
(
'name'
)
const
getUpperName
=
R
.
pipe
(
getName
,
R
.
toUpper
)
const
magicFn
=
products
=>
customers
=>
{
const
getCustomerProducts
=
filterProducts
(
products
)
return
R
.
reduce
(
(
acc
,
customer
)
=>
(
{
...
acc
,
[
getUpperName
(
customer
)
]
:
R
.
map
(
getName
,
getCustomerProducts
(
customer
)
)
}
)
,
{
}
,
customers
)
}
return
magicFn
(
products
)
(
customers
)
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
sum
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
oldArr
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
oldObj
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
subtract
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
multiply
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
divide
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
pass10
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
cSum
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
cSubtract
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
cMultiply
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
cDivide
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
isMedium
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
getProductName
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
getName
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
rGetName
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
products
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
customers
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
R
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Reselect
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML