Если вы можете иметь все свои переменные внутри массива, вы можете сделать
yourArray.filter(Boolean).length >= 2
Чтобы разбить его на части, давайте перепишем вышеперечисленное более подробно:
yourArray
.filter(
function (variable) {
return Boolean(variable)
}
)
.length >= 2
Теперь array.filter () получает каждую переменную в массиве и запускает каждую из них в качестве аргумента для функции внутри паренов, в данном случае: Boolean () . Если возвращаемое значение равно truey , переменная «фильтруется», если нет - «фильтруется». Затем он возвращает новый массив без отфильтрованных переменных.
Boolean () - это функция, которая приведет ваше значение в значение true или false. Если в переменной есть значение, он вернет true ... Но есть ловушка: он вернет false для нулей и пустых строк - остерегайтесь этого.
Наконец, мы используем .length чтобы подсчитать, сколько переменных было «отфильтровано», и, если их больше двух, вы можете продолжить работу с кодом.
Может быть, этот псевдокод может лучше проиллюстрировать его:
const variables = ['foo', undefined, 'bar'];
variables.filter(Boolean).length >= 2;
['foo', undefined, 'bar'].filter(Boolean).length >= 2;
keepIfTruthy(['foo' is truthy, undefined is falsy, 'bar' is truthy]).length >= 2;
['foo', 'bar'].length >= 2;
2 >= 2;
true;