こうこく
作 ▸
改 ▸

Chai の assert.hasAnyKeys, .hasAllKeys, .containsAllKeys

Chaiの assert でオブジェクトのキーの有無を検証するやつ、微妙に覚えられない

  • hasAnyKeys は、指定されたキーをどれか一つでも持ってればOK。
  • doesNotHaveAnyKeys は、指定されたキーを一つも持ってなければOK (hasAnyKeys の逆)。
  • hasAllKeys は、指定されたキーを過不足なく持ってればOK。
  • doesNotHaveAllKeys 、指定されたキーに過不足があればOK (hasAllKeys の逆)。
  • containsAllKeys は、指定されたキーを全て含んでればOK。
作 ▸

JavaScriptで配列から重複した値を消す

reduce の第二引数 (最初の a 値として扱われる) にカラの配列を渡して push してやると、結果を配列に詰め直せる

indexOfで比較する方法
['C','A','B','C','B'].reduce((a, v) => {
	if (a.indexOf(v) < 0) a.push(v);
	return a;
}, []);

// -> ["C", "A", "B"]
sortして最後尾と比較する方法
['C','A','B','C','B'].sort().reduce((a, v) => {
	if (v !== a[a.length - 1]) a.push(v);
	return a;
}, []);

// -> ["A", "B", "C"] ※元と順番変わる

どちらの方法も比較は === で行われることを留意