javascript set同士が等しいかを判定する

javascript set同士が等しいかを判定する

javascriptで、set同士が等しいかを判定するサンプルコードを掲載してます。「===」などの演算子では比較できないため全ての値が対象のsetに存在するかチェックして判定します。

環境

  • OS windows11 pro 64bit
  • ブラウザ chrome 107.0.5304.63

等しいかを判定する

set同士が等しいかを判定するには、
1. 同じサイズであるか判定
2. setを配列化して「every」で全ての値が含まれているか判定
することで可能です。

function check(s1, s2) {

  // サイズを比較
  if (s1.size !== s2.size) return false;

  // 配列化してeveryで全ての値が存在するのかを判定
  return [...s1].every(function(v){return s2.has(v);});

}

const set1 = new Set(['a', 'b', 'c']);
const set2 = new Set(['a', 'b', 'c']);
const set3 = new Set(['c', 'b', 'a']);
const set4 = new Set(['c', 'b', 'a', 'd']);

// 判定できない
console.log( set1 === set2); // false

console.log(check(set1, set2)); // true
console.log(check(set1, set3)); // true
console.log(check(set1, set4)); // false

「every」は配列にある値が条件を全て満たすときのみ「true」が返ります。

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

console.log( arr.every( function(v){return  v > 0} ) );
// true

console.log( arr.every( function(v){return  v > 2} ) );
// false