JavaScriptで数値を漢数字に変換する

俺様仕様。
使おうと思ったらまともに動かなかった!なんで?
ということで書き直した。
動かしているうちに短くなってしまった
もう少し煮詰めれば、さらに短くなりそうなのだけれど…
今日は終了!

  function kansuji(a,t=0,r='',N=[...'〇一二三四五六七八九'],M=['',...'十百千'],K=['',...'万億兆京垓𥝱穣溝澗']){
    return(''+a).replace(/(\d+)/g,a=>{
      if(t||'0'==a)return[...a].map(n=>N[n]).join``;
      [...a].reverse().map((n,i)=>r=((n-=0)&&i%4&&n==1?'':N[n])+M[i%4]+(i%4?r:K[(i/4)|0]+r))
      return r;
    })
  }


前に書いて動かなかったやつ


  function kansuji(a,t=0,r='',N=[...'〇一二三四五六七八九'],M=['',...'十百千'],K=['',...'万億兆京垓𥝱穣溝澗']){
    return(''+a).replace(/(\d+)/g,a=>{
      if(t||'0'==a)return[...a].map(n=>N[n]).join``;
    [...a].reverse().map((n,i)=>r=(((n-=0)==1&&i%4||!n)?'': N[n])+M[i%4]+(i%4?r:K[(i/4)|0]+r))
      return r;
    })
  }


[
  "洋野町第123地割4567番地890123",
  0,
  10, 11, 12,
  100, 111, 123,
  1000, 1111, 1234,
  10000, 11111, 12345,
  100000, 111111, 123456,
  1000000, 1111111, 1234567,
  10000000, 11111111, 12345678,
  100000000, 111111111, 123456789,
  1000000000, 1111111111, 1234567890
].forEach (n=>{
  console.log (n, kansuji(n));
})