前端如何实现一个斐波那契数列 & 前端思考

75 阅读2分钟

本文已参与「 新人创作礼 」活动,一起开启掘金创作之路

关于如何进行图片优化 - 适合的才是最好的

昨天说了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的草稿跟思考。