Platform
Resources
Pricing
Sign in
Get started
Anjana Vakil
Engineer & Educator | Observable Ambassador | Karaoke Enthusiast
Workspace
Fork
Published
Talks
By
Anjana Vakil
Edited
Jun 3, 2022
11 forks
60 stars
Insert cell
2
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
cardDeck
=
(
{
suits
:
[
"♣️"
,
"♦️"
,
"♥️"
,
"♠️"
]
,
court
:
[
"J"
,
"Q"
,
"K"
,
"A"
]
,
[
Symbol
.
iterator
]
:
function
*
(
)
{
for
(
let
suit
of
this
.
suits
)
{
for
(
let
i
=
2
;
i
<=
10
;
i
++
)
yield
suit
+
i
;
for
(
let
c
of
this
.
court
)
yield
suit
+
c
;
}
}
}
)
Insert cell
[
...
cardDeck
]
Insert cell
Insert cell
Insert cell
function
*
infinityAndBeyond
(
)
{
let
i
=
1
;
while
(
true
)
{
yield
i
++
;
}
}
Insert cell
function
*
take
(
n
,
iterable
)
{
for
(
let
item
of
iterable
)
{
if
(
n
<=
0
)
return
;
n
--
;
yield
item
;
}
}
Insert cell
taken
=
[
...
take
(
5
,
infinityAndBeyond
(
)
)
]
Insert cell
function
*
map
(
iterable
,
mapFn
)
{
for
(
let
item
of
iterable
)
{
yield
mapFn
(
item
)
;
}
}
Insert cell
squares
=
[
...
take
(
9
,
map
(
infinityAndBeyond
(
)
,
(
x
)
=>
x
*
x
)
)
]
Insert cell
Insert cell
Insert cell
2
Insert cell
Insert cell
now
Insert cell
Insert cell
t
=
Math
.
sin
(
now
/
1000
)
*
0.5
+
0.5
Insert cell
Insert cell
Insert cell
function
binaryTreeNode
(
value
)
{
let
node
=
{
value
}
;
node
[
Symbol
.
iterator
]
=
function
*
depthFirst
(
)
{
yield
node
.
value
;
if
(
node
.
leftChild
)
yield
*
node
.
leftChild
;
if
(
node
.
rightChild
)
yield
*
node
.
rightChild
;
}
;
return
node
;
}
Insert cell
tree
=
{
const
root
=
binaryTreeNode
(
"root"
)
;
root
.
leftChild
=
binaryTreeNode
(
"branch left"
)
;
root
.
rightChild
=
binaryTreeNode
(
"branch right"
)
;
root
.
leftChild
.
leftChild
=
binaryTreeNode
(
"leaf L1"
)
;
root
.
leftChild
.
rightChild
=
binaryTreeNode
(
"leaf L2"
)
;
root
.
rightChild
.
leftChild
=
binaryTreeNode
(
"leaf R1"
)
;
return
root
;
}
Insert cell
[
...
tree
]
Insert cell
Insert cell
Insert cell
getSwapiPagerator
=
(
endpoint
)
=>
async
function
*
(
)
{
let
nextUrl
=
`https://swapi.dev/api/${
endpoint
}`
;
while
(
nextUrl
)
{
const
response
=
await
fetch
(
nextUrl
)
;
const
data
=
await
response
.
json
(
)
;
nextUrl
=
data
.
next
;
yield
*
data
.
results
;
}
}
// Example adapted from Luciano Mammino's https://www.nodejsdesignpatterns.com/blog/javascript-async-iterators/
Insert cell
starWars
=
(
{
characters
:
{
[
Symbol
.
asyncIterator
]
:
getSwapiPagerator
(
"people"
)
}
,
planets
:
{
[
Symbol
.
asyncIterator
]
:
getSwapiPagerator
(
"planets"
)
}
,
ships
:
{
[
Symbol
.
asyncIterator
]
:
getSwapiPagerator
(
"starships"
)
}
}
)
Insert cell
{
const
results
=
[
]
;
for
await
(
const
page
of
starWars
.
ships
)
{
console
.
log
(
page
.
name
)
;
results
.
push
(
page
.
name
)
;
yield
results
;
}
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
space
=
(
)
=>
html
`<div style="height:40em"></div>`
Insert cell
Insert cell
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
Show 2 comments
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
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
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
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
cardDeck
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
infinityAndBeyond
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
take
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
taken
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
map
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
squares
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
Edit
Show 2 comments
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
t
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
binaryTreeNode
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
tree
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
getSwapiPagerator
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
starWars
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
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
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
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
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
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
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
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
space
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
builderFontSize
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
accentColor
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainColor
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
scale
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
builder
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
nobuilder
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
stroke
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
fill
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
d3
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML