50 lines
814 B
JavaScript
50 lines
814 B
JavaScript
function* forEachGenerator() {
|
|
yield* forInGenerator3();
|
|
yield* forInGenerator2();
|
|
}
|
|
|
|
function* forInGenerator3() {
|
|
var object = {
|
|
a: 0,
|
|
b: {
|
|
c: 1,
|
|
},
|
|
d: 2
|
|
};
|
|
for (var key in object) {
|
|
yield key;
|
|
for (var key2 in object[key]) {
|
|
yield key2;
|
|
}
|
|
}
|
|
}
|
|
|
|
function* forInGenerator2() {
|
|
var object = {
|
|
a: 0,
|
|
b: 1,
|
|
c: 2
|
|
};
|
|
var key;
|
|
for (key in object) {
|
|
if (key == 'a') {
|
|
delete object.b;
|
|
object.d = 3;
|
|
}
|
|
yield key;
|
|
yield object[key];
|
|
}
|
|
}
|
|
|
|
function accumulate(iterator) {
|
|
var result = '';
|
|
for (var value of iterator) {
|
|
result = result + String(value);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
assert.equal('abcda0c2', accumulate(forEachGenerator()));
|