class Fib {
constructor(num) {
this.num = num
}
*[Symbol.iterator]() {
let [a, b] = [0, 1];
while (true) {
[a, b] = [b, a + b];
if (a > this.num) return;
yield a;
}
}
}
let fibs = new Fib(100)
for (let f of fibs) {
console.log(f);
}
100之内的斐波那契数列依次输出
let data = {
names: ["Jack", "Rose", "Tom", "Mike"],
ages: [20, 21, 19, 22],
[Symbol.iterator]: function* () {
for (let i = 0; i < this.names.length; i++) {
yield { name: this.names[i], age: this.ages[i] };
}
},
};
let ps = [...data];
console.log(ps[0].name); //输出为( 1 )
console.log(ps.filter((p) => p.age > 20).length); //输出为( 2 )
let [{ name }, { age }] = data;
console.log(name); //输出为( 3 )
console.log(age); //输出为( 4 )