Published
Edited
Mar 2, 2018
3 stars
Insert cell
Insert cell
{
let a = new Set([1, 2, 3]).values();
return md`Okay, so the values in that set are: “${[...a]}”. Just to remind you, they are “${[...a]}”. Wait, what? I just tried the same thing - \`[...a]\` - twice, and the second time it returned nothing. That's because Set#values returns an iterator over the values in a set that can only iterate over them once.`;
}
Insert cell
Insert cell
function isPureIterable(obj) {
return obj[Symbol.iterator] && obj[Symbol.iterator]() !== obj;
}
Insert cell
Insert cell
isPureIterable([1, 2, 3])
Insert cell
isPureIterable(Immutable.List([1, 2, 3]))
Insert cell
isPureIterable(new Set([1, 2, 3]))
Insert cell
isPureIterable(new Map([[1, 2]]))
Insert cell
Insert cell
isPureIterable((function* onceIterable() {
for (let i = 0; i < 3; i++) yield i;
})())
Insert cell
isPureIterable([1, 2, 3].entries())
Insert cell
isPureIterable(new Set([1, 2, 3]).values())
Insert cell
Insert cell
function* objectEntries(obj) {
for (const propKey of Reflect.ownKeys(obj)) {
yield [propKey, obj[propKey]];
}
}
Insert cell
{
let entries = objectEntries({ a: 1, b: 2 });
return md`Okay, so the entries in that object are: “${[...entries]}”. Just to remind you, they are “${[...entries]}”.`;
}
Insert cell
Insert cell
isPureIterable(objectEntries({ a: 1, b: 2 }))
Insert cell
Insert cell
function pureObjectEntries(obj) {
return {
[Symbol.iterator]: function* () {
for (const propKey of Reflect.ownKeys(obj)) {
yield [propKey, obj[propKey]];
}
}
};
}
Insert cell
{
let entries = pureObjectEntries({ a: 1, b: 2 })
return md`Okay, so the entries in that object are: “${[...entries]}”. Just to remind you, they are “${[...entries]}”.`;
}
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.
Learn more