PUROGU LADESU

ポエムがメインのブログです。

Javascript

【Javascript】オブジェクト配列で指定キーのmin, maxを取得する

オブジェクト配列で指定キーのmin, maxを取得する reduceを使います。 prevとcurrentをキーで比較し、オブジェクトをreturnします。 const data = [ { name: "aaa", score: 90 }, { name: "bbb", score: 30 }, { name: "ccc", score: 20 }, { name: "ddd", s…

【Javascript】Promiseの復習

Promise Promiseは非同期処理のためのものです。 時間のかかる処理を使う場合に必要です。 ややこしいですがDBやネットワーク処理などかなり使い所が多いのでこれは必ずマスターする必要があります。まず、目的の処理を作成し、new Promiseでラップします。 …

Javascriptの落とし穴6

JSON JSONとオブジェクトリテラルは変換が必要。でも簡単にできる。 console.log(JSON.parse('{"x":1,"y":2,"z":3}')); console.log(JSON.stringify(obj3)); オブジェクト変更の制限 use strictを宣言しないと効果がない(IEでは無効) Object.preventExtens…

Javascriptの落とし穴5

クラス(プロトタイプ) Javascriptではプロトタイプベースという方式でクラスを実現しています。 これが一番クセ者です。ES6ではclassキーワードが使えるようになり、多少マシになりましたが。コンストラクタはただの関数リテラルです。コンストラクタ、メ…

Javascriptの落とし穴4

関数 1.function命令 通常のやり方。解析時に登録され、宣言より上からでも呼び出せる console.log(getPlus(8)); function getPlus(x) { return x + 10; }2.Functionオブジェクト 文字列として定義できる。ただ必要ない限り使わない。 var getTri = new Func…

Javascriptの落とし穴3

正規表現でキャプチャしたい場合はmatchではなくmatchAllかexecを使う matchはgをつけると複数認識するが、キャプチャを返さない。 ilet optlist = [ '<select name="country">', '<option value="us" selected>アメリカ 合衆国</option>', '<option value="fr">ふらんす</option>', '<option value="in">インド</option>', ].join("\n"); console.log(optlist); let regexp2 = new </select>…

Javascriptの落とし穴2

配列の初期化 配列の宣言のときArrayオブジェクトをnewしてはいけません。バグのもとです。 リテラル[]で初期化します。 わざわざnewしなくても同じことができます。 let bad = new Array(11, 22, 33); let good = [1, 22, 33]; 配列のコピー スプレッド構文…

Javascriptの落とし穴1

Javascriptはクセがスゴイ ブラウザさえあれば動くし何となくかけるものの危険がいっぱいです。 シンタックスもES6が出てきて劇的に変わったり、ブラウザ問題もあります。 Node.jsでは動作が違ったりここでも使える使えない問題が発生したりします。 JSフレ…

【Javascript】??演算子と.?演算子

この演算子はES2020で導入されるらしいですが、react-nativeを入れるとこちらの機能を含んだbabelプラグインがインストールされて最初から使えるようになってるみたいです。 最初サンプルとかで出てきて??となってましたが、検索がしづらいのなんの。名前…

【javascript】sleep関数

非同期処理の動作確認で便利。 const wait = (timeout) => { return new Promise((resolve) => { setTimeout(resolve, timeout); }); }; await wait(3000)

【Javascript】Promise.allは順番を保証されるか

勘違いしていました。 返値は、実行完了の順とは関係なく、 Promise が渡された順に並びます。 とあるので、保証されると思います。 developer.mozilla.org 実際にやってみました。 処理はtimer1000が一番早く終了しますが、渡した順番の通りtimer3000が配列…

【Javascript】forEachでasync/awaitがうまくいかない件

うまくいかないのはPromiseの問題ではなくまさかのforEachの問題だった! forEachのループの中でawaitしても待ってくれません。ぐぬぬ・・・。 for-ofなら大丈夫みたいです。 ダメな例(waitで待たずにループを抜けてしまう) func3 = async () => { let acc…

【Javascript】async / awaitとPromiseがすぐ分からなくなる

何度調べてもしばらくたつとわからなくなりますね。 特に関数が増えてネストしまくると値が取れなくなってしまったりしています。 async / awaitのポイント awaitをつけるとresolve or rejectを待機するようになる(同期処理) awaitを使うには呼び出し元の…

【Javascript】モジュールインポートを絶対パスで指定する

import firebase from '../../firebase'; ↓ import firebase from 'app/src/firebase'; ルートのエイリアスをpackage.jsonに設定する。 { "name": "app", } jsconfig.jsonのpathsにも設定すると、VSCodeでインテリセンスが使える。 // jsconfig.json { "comp…