Python vs JS
REF
JSの優れた演算子の使いかたと足りない関数の代用のメモです。内包表記など、自分がよくつかう(忘れる)かき方をPythonと比べました。 以下では次の変数a,b,c,dを共通して用います。
-
List
a = [1,2,3] -
List
b = [4,5,6] -
Int
c = 4 -
Dict
d = {'a':a,'b':b}
e.g. spread operator
-
Python
JS
-
a + b + [c][...a, ...b, c] -
{**d, 'c':c, **dict(d=0)}{...d, c, ...{d:0}} - (
*,...はshallow copyなので注意)
basic Python vs JS
-
Python
JS
-
50//c*c~~(50/c)*c//48 (c=4) -
True if c>0 else cc>0 || c -
c if c>0 else Falsec>0 && c -
value, _, _ = avar [value, _, _] = a -
func = lambda v: v*2func = v => v*2 -
bool = b[0]==cbool=b[0]===c: 値の一致 -
bool = a==bbool=!a.map((v,i)=>v===b[i] ).includes(false)配列の一致(jsでは配列は===できない)
array Python vs JS
-
Python
JS
-
sum(a)a.reduce((x,y)=>x+y) -
max(a)a.reduce((x,y)=>x>y?x:y)//x<y?でmin -
map(lambda: v**2, a)a.map(v=>v**2) -
[0]*cArray(c).fill(0)//[0, 0, 0, 0] -
[i for i in range(c)][...Array(c)].map((_,i)=>i)//[0,1,2,3,4] -
[v for v in zip(a,b)]a.map((v,i)=>[v,b[i]]) -
[[k,v] for k,v in d.items()]Object.keys(d).map((v,i)=>[v,Object.values(d)[i]])
class-based vs functional
class X extends React.Component{...}
const X = (props) => {...}
-
access to state? : Yes
Yes
-
lifecycle hooks ? : Yes
No
-
acess state via ?:
this.stateuseState -
acess props via ?:
this.propsprops
more
-
init delays via? :
componentDidMountuseEffect(()=>{...}, []) -
run delays via? :
componentDidUpdateuseEffect(()=>{...},[...]) -
clean up via? :
commponentWillUnmountuseEffect(()=>{return()=>{...}}, []) -
optimize via? :
shouldCommponentUpdateuseMemoanduseCallback