JavaScript

モダン CODE TIPS

Cheatsheet

async / await

Sleep / Wait

async関数の中
await new Promise(r => setTimeout(r, 5000));
即時関数
(async () => {
  console.log('start');
  await new Promise(r => setTimeout(r, 5000));
  console.log('end');
})();

非同期処理の For Loop 繰り返し

直列実行
async function printFiles () {
  const files = await getFilePaths();

  for (let file of files) {
    const contents = await fs.readFile(file, 'utf8');
    console.log(contents);
  }
}
並列実行
async function printFiles () {
  const files = await getFilePaths();

  await Promise.all(files.map(async (file) => {
    const contents = await fs.readFile(file, 'utf8')
    console.log(contents)
  }));
}

n回ループ

[...Array(5)].map((_, i) => console.log(i))
//=> 0
//=> 1
//=> 2
//=> 3
//=> 4

[...Array(20)].map(() => '★').join('')
//=> ★★★★★★★★★★★★★★★★★★★★

Objectの複製・マージ

オブジェクトを複製する
const obj = { a: 1 };
const copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }
オブジェクトをマージする
const o1 = { a: 1 };
const o2 = { b: 2 };
const o3 = { c: 3 };

const obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }, targetオブジェクト自身が変化する

Array

重複の除去 (unique / distinct)

const animals = ["cat", "cat", "dog", "mouse", "dog"];
const distinctAnimals = [...new Set(animals)];
//=> ["cat", "dog", "mouse"]

指定した範囲の整数配列

Array.from(Array(100).keys())
// => [0, 1, 2, ..., 99]
console.table([...Array.from(Array(100).keys())].map((n)=>{
  return { '16': n.toString(16), '36': n.toString(36) }
}))

import

別名をつける

import { member as alias } from "module-name";

class

静的メソッドの呼び出し