mk-toolブログ

エンジニアと家のことをごちゃごちゃと書いてます

javascript

javascriptでarrayを結合して重複を排除する

javascriptでarrayの結合(足し算) をして、重複を出したくない場合、以下のやり方でok。 const array3 = [ ...new Set([ ...(array1 || []), ...(array2 || []), ]), ]

Sequelizeで多対多のテーブルジョインを定義する

一つの記事には複数の著者が存在し(共同著者)、著者には複数の記事が結びつく場合、中間テーブルを利用して多対多の状態をつくれるようにしなければならない。 そのように行う方法を説明する。 これには、 belongsToMany を利用することで多対多のデータ構造…

resolveJsonModuleでDate型を使いたい

resolveJsonModule では json を読みこみ、 typeof を与えてあげることで、モックデータから型を自動で生成してくれる。 しかしながら、 json を読み込む部分では、 Date 型を扱いたくても、 string と判定されてしまう。 { ... createdAt: "2000-01-01 00:0…

SequelizeでwhereHasを行う

include内のrequired値をtrueにすることでwhereHasと同じ挙動の動作をさせることができる。 falseの場合は、ORMのリレーションの結果が0件でも取得できる。 attributesを[]にすることで、whereHasだけを利用することも可能。 XXX.findAll({ where: findAllPa…

jsでテキストをclipboardにcopyする

javascriptで外部モジュールなしに、クリップボードへコピーする方法を紹介する。 以下の関数で動く。 copyToClipboard(text){ navigator.clipboard.writeText(text).then(function() { /* clipboard successfully set */ }, function() { /* clipboard writ…

mailparserで `iso-2022-jp` を扱う

メールが文字化けをしてしまう 何も考えずに mailparser を利用すると、 iso-2022-jp の文字コードの日本語文字が文字化けしてしまう。 これを対処するには、 iconv を利用することで解決することができる。 まず、 iconv をinstallする。 npm i iconv MailP…

index.d.tsの使い道

index.d.ts とは でぐぐったものの、核心に迫るような記事を見つけることができなかったので、まとめる。 index.d.ts は、 node_modules/@types 以下のディレクトリに入れられているモジュール群の中で使われていることをよく目にする。 中身を見てみると、…

jestを扱う上で参考にしたサイト

package.jsonの設定はこのQiita記事を参考にした restify + TypeScript + Jestの開発環境をセットアップしてみる - Qiita axiosを使ったりDB連携で参考にした Jestでテストを書こう! setupとteardown、jestの公式ドキュメント Setup and Teardown · Jest わ…

javascriptの配列初期化におけるナゾ

javascriptで以下の操作で2次元配列を生成すると、値の更新を行う際に列ごと更新がかかる。 let cost_array = (new Array(3)).fill((new Array(3)).fill(999)) cost_array[1][1] = 3 生成した配列に対して、mapで2次元配列を作ってあげると、単一の要素が更…

javascript の reduce() でディクショナリを扱う

javascript で ディクショナリの配列を reduce() する際に配下の方法が一般的である。 var initialValue = 0; var sum = [{x: 1}, {x: 2}, {x: 3}].reduce(function (accumulator, currentValue) { return accumulator + currentValue.x; },initialValue) co…

【js】次の要素を取得・隠す

javascript <button>非表示へ</button> <div id="next">これが消えます<div>function hideNext(e){ var nextElement = e.nextElementSibling; if (nextElement.style.display !== 'none') { nextElement.style.display = 'none'; e.innerHTML = ' 表示 '; } else { nextElement.style.display = 'b</div></div>…

【Laravel】cssファイルやjsファイルを読み込む

jsファイルとcssファイルはプロジェクトに自動的に作成される「public」フォルダ配下に入れる。publicフォルダ配下に自由にjsファイルやcssファイルを入れることになるが、 管理のしやすさのためにpublicフォルダの中に「js」フォルダと「css」フォルダを作…