1. 配列をシャッフルする
JavaScript
const shuffle = (arr) => arr.reduceRight((acc, _, i) => { const j = Math.floor(Math.random() * (i + 1)); [acc[i], acc[j]] = [acc[j], acc[i]]; return acc }, [...arr])
const data = ['A', 'B', 'C']
console.log(shuffle(data))
// 例: ['B', 'C', 'A']※ sort(() => Math.random() - 0.5) で作ってはいけません。
2. 配列から重複を削除する
JavaScript
const uniq = (arr) => [...new Set(arr)]
const data = ['A', 'B', 'B', 'C']
console.log(uniq(data))
// ['A', 'B', 'C']3. 配列からランダムに1要素を取り出す
JavaScript
const sample = (arr) => arr[Math.floor(Math.random() * arr.length)]
const data = ['A', 'B', 'C']
console.log(sample(data))
// 例: ['B']4. 数値を範囲内に収める(0〜100に制限する例)
JavaScript
const clamp = (val, min, max) => Math.min(Math.max(val, min), max)
console.log(clamp(150, 0, 100)) // 100
console.log(clamp(-20, 0, 100)) // 0
console.log(clamp(45, 0, 100)) // 455. 指定したミリ秒だけ処理を一時停止
JavaScript
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))6. Cookieをオブジェクトとして保存する
JavaScript
// Cookieをオブジェクトとして保存する(保存可能な最大日数は400日(34560000))
const setCookie = (key, value, maxAge = 34560000, path = '/') => document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}; Max-Age=${maxAge}; Path=${path}`7. Cookieをオブジェクトとして取得する
JavaScript
const getCookies = () => Object.fromEntries(document.cookie.split('; ').map((c) => c.split('=')))lodashにも同様の処理はある
1.〜4.に関してはlodashにも同様の処理のメソッドが存在します。
- _.shuffle(collection)
- _.uniq(array)
- _.sample(collection)
- _.clamp(number, [lower], upper)
しかし、lodashが使用可能とは限らないですし、カスタマイズした関数が必要な場合もあります。
そのため、これらの基本的な処理は自分でも書けるように、書き方を覚えておくことを推奨します。


