心境变化的起因
虽然很多时候,有“差生文具多”的嫌疑,我自己的google blog其实也没有太多问题(只是访问不了而已)。不过还是花了不到一个小时的时间把这个博客架设起来了~
起因非常突然,今天突然看到了我的github绿色马赛克多了(如上图),我意识到自己最近一段时间状态不错😌。想着把博客也转过来吧,把笔记本里沉睡的一些东西写出来。虽然有点担心自己写的东西不成熟,也许日后看来是胡言乱语,但是想着还是公开出来比较好。未来可以整理吗~~
我沉迷typescript了
最近,开始痴迷了typescript和对对应的前端开发,react,next.js,vscode,github,等等很多东西让我有点静下心来了。有点点收获,比如,发现在ts中,reduce真的可以完全代替循环存在,于是乎,写出了以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| const FitInfo = (carList: CarItem[]) => { const combine = (years: string[]): string => { const year_combine = years.reduce((acc, year) => { if (acc === '') return year const left = acc.slice(0, acc.lastIndexOf(',') + 1 + 4) const right = acc .slice(acc.lastIndexOf(',') + 1, acc.length) .slice(-4) if (Number(year) - Number(right) === 1) return left + '-' + year if (Number(year) - Number(right) > 1) return acc + ',' + year return acc }, '') return year_combine } const description = sort(carList) .asc([(u) => u.make_name, (u) => u.model_name, (u) => u.year_name]) .map((v) => { return { carname: v.make_name + ' ' + v.model_name, year: v.year_name, } }) .reduce((acc, item) => { if ( !acc.some((it): boolean => { return it.carname === item.carname }) ) { acc.push({ carname: item.carname, year: [item.year] }) } else { const obj = acc.find((it) => it.carname === item.carname) obj?.year.push(item.year) } return acc }, [] as { carname: string; year: string[] }[]) .reduce((acc, item) => { return acc === '' ? item.carname + ' ' + combine(item.year) : acc + ';' + item.carname + ' ' + combine(item.year) }, '') return description }
|
我自己突然有些联想,长辈提过他上学的时候就是学习的lisp,不知道能否和他交流(大概率是不行吧🙍♂️)。lisp把数据和程序混在一起。我再看这段代码,循环完全是用reduce实现的,也许真的存在严禁证明for可以是不必要的。map、reduce就可以完成遍历操作。在我的程序中,为了实现目标,我引入了很多中间神奇的数据结构(指的是{ carname: string; year: string[] }
),也许这就是数据和程序混在一起的感觉?利用数据结构来实现循环目标?不清楚了,希望我也能有朝一日接触到学院派的内容。当然,希望接触目标的时候能有足够的实践:比如,写个智能合约😊。
大概就是这么多,有点点困了,指针过了12点了,晚安。