本文已参与「 新人创作礼 」活动,一起开启掘金创作之路
昨天说了getPrototypeOf 、setPrototypeOf、defineProperty。
本来今天想来写一个实现双向绑定的DEMO,但是的思绪比较混乱,还是该下次写。我还是找一些我之前写过的DEMO,速战速决吧。
结尾我会总结下我今天的思考。
今天的事如何实现一个 斐波那契数列,打印出小于1000的集合
这里一共有2种方法
let arr = [] , [ prev , cur ] = [0 , 1];
while (true) {
[ prev , cur ] = [ cur , prev + cur];
if (cur > 10000) break;
arr.push ( cur );
}
console.log (arr);//[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
其实要实现斐波那契数列有2个要掌握:
1.题目的意思要弄清楚什么是斐波那契数列 array[ index ] + array[index+1] = array[index+2]
2.遍历的选择
掌握这2个要素,我们就可以继续了。
我们换个方法实现
function *fibonacii() {
let [prev , cur] = [0,1];
while (true) {
[prev , cur] = [ cur , prev + cur];
yield cur;
}
}
let arr = [];
for (let o of fibonacii()) {
if (o > 10000) break;
arr.push(o);
}
console.log (arr);
1.上面的意思我还是要掌握
2.如何应用对生成器函数【generator实现】的理解 ( 定义 【*】、调用【of】 )而且第二种更加的灵活 我个人比较喜欢用生成器的方式去构造 & 业务逻辑的处理。这也是es6 才提供的方法。
但是目前大部分人对生成器的写法还是觉得不太友好。
在React redux中间件 Saga就有对generator 的推崇的设计方案。我个人觉得非常的实用。
接下来在说一个扁平化的问题。
let a1 = [1,2,3,[4,5],[5,6,8]]
a1.flat()
是不是大家都会想到用a1的flat的内置函数,如果不能用这个还有其他方式来实现吗?
貌似我想到就有好集中方式。
1、序列化
2、for 循环
如果这2中又该如何实现呢 ? 明天我们来看看这2道题的操作。
PS:我做开发也有10年时间,最初写过几年JAVA、中途做过 C#几个月、Lucence搜索几个月、学过Android、iOS 貌似现在都还给大自然了。学前端Node那肯定要懂的,说的这几个我是系统的花过时间的!现在去了区块链行业貌似区块链的开发如火如荼,想学一门新的语言,问了几个同事他们都说Go,在后续的时间里, 如果真的我去学Go,我就准备开始写Go的草稿跟思考。