python-列表推导 js-数组推导

Author Avatar
Aryb1n 5月 30, 2017

我的py学的菜爆了,哦,不是说我的js不菜,是都菜,我承认了,我现在都没认全py的类型

python-列表推导

不得不说py的REPL环境比node体验差很多啊,,,高亮没有,不全也没有,,,啊啊啊,
然后查了一下,据说,有一个python-prompt-toolkit的东西可以自己拿来构建一个REPL
链接 http://blog.just4fun.site/python-prompt-toolkit.html
我决定使用基于它它构建好的工具
阔怕,这个人的blog也推荐,不知道是不是他的blog,内容好多,真666

好了,前面说了一堆没用的,,,

>>> res = [i * i for i in [1, 2, 3]]
#=> [1, 4, 9]

如果有条件

>>> res = [i * i for i in [1, 2, 3] if i > 1]
#=> [4, 9]

js-数组推导

这个功能本来是准备ES6加入的,后来推到了ES7

var raw = [1, 2, 3, 4, 5];
var res [for (i of raw) i * 2];

但,我发现我的node怎么跑不了这个代码

> var raw = [1, 2, 3, 4, 5];
undefined
> var res = [for (i of raw) i * 2];
...

你给我三个点点点什么意思….难道是现在还没办法用吗,翻车了
无奈的我到FF里跑了一下确实可以的

这个功能甚至可以替代ES5里的map和filter (ノ*・ω・)ノ

数组推导

[for (i of [1, 2, 3]) i * i]

ES5 map

[1, 2, 3].map(i => i * i)

Ramda

var R = require('ramda');
R.map(i => i * i, [1, 2, 3]);

或者让我科里化一次(傲娇状)

var R = require('ramda');
square = R.map(i => i * i);
square([1, 2, 3])

filter

实现filter的话,还需要使用if

[for (i of [1, 2, 3, 4, 5]) if(i < 3) i]

好了,the end

突然沮丧,又有什么用呢,你又不写前端,每天学这些,还想不想保研了