jQuery сцепить переменные, если оба имеют значение?

Я действительно надеюсь, что это не дубликат, хотя, конечно, возможно, и я просто не ищу правильные термины.

Я работаю над своей собственной проверкой надежности пароля на основе версии flycars.

И я пытаюсь найти способ объединить две переменные (только если обе существуют).

Вот что у меня есть:

var thisVal = $('.password_input').val(),
    thisStrength = zxcvbn(thisVal),
    thisMeter = $('.password_strength_meter'),
    thisLabel = $('.password-text'),
    thisSuggestion = $('.password-text-suggest');

thisSuggestion.text(thisStrength.feedback.warning + ". " thisStrength.feedback.suggestions);

Если

Будет ли лучший способ сделать несколько операторов if? Или есть какой-то способ вставить его в раздел.text()?

Возможно, я подумываю о расширении этого вопроса, включая время, необходимое для взлома:

thisSuggestion.text(thisStrength.feedback.warning + ". This password could be cracked in: " + thisStrength.crack_times_display['online_no_throttling_10_per_second'] + ". " + thisStrength.feedback.suggestions);

так что, надеюсь, можно избежать нескольких утверждений.

1 ответ

Решение

Быстрый и простой способ сделать это - добавить все переменные, которые могут содержать строки, в массив. Затем вы можете отфильтровать пустые или ложные значения и объединить оставшиеся значения с выбранным разделителем.

const a = 'This will be there',
  b = '',
  c = null,
  d = 'So will this';

let result = [a, b, c, d].filter(x => x).join('. ') + '.';

console.log(result);

Другие вопросы по тегам