Я использую chai для написания модульных тестов, и я хотел бы утверждать, что два массива не пересекаются (т.е. они не имеют общего элемента).
Примерно так:
assert.areDisjoint([1, 2, 3], [2, 4]); // fail
assert.areDisjoint([0], [1, 1, 2]); // pass
assert.areDisjoint(['foo'], ['foo']); // fail
assert.areDisjoint(['foo', 'foo'], []); // pass
Я посмотрел на множество различных предопределенных утверждений здесь и здесь , но, похоже, ничего не подходит.
Мой текущий (рабочий) подход:
assert.equal(
new Set([...array1, ...array2]).size,
new Set(array1).size + new Set(array2).size,
'expected iterables to be disjoint'
);
Я думаю, вы понимаете, почему мне не нравится этот метод: он делает намерение неясным и раздувает код. Интересно, есть ли более элегантный способ написать это утверждение?