как создать строку сообщения, используя значения массива при наличии

#javascript #arrays #string #message

#javascript #массивы #строка #Сообщение

Вопрос:

Я пытаюсь отобразить предупреждение пользователю, я разбиваю массив и всегда использую значения позиций 0 и 1, иногда массив может содержать значение в позиции 2, а не все время.

Я хотел бы создать строку сообщения, чтобы показать значение arr[2], если оно есть, или только arr[0] и arr [1], если arr[2] отсутствует.

Я пытался сделать это таким образом:

 strWarningMsg =

    arr[2].length > 0 ? arr[1]   arr[2]   ' meeting, '   'nscheduled for: '   arr[0].replace(/  /g, " ")
      '; data has been already uploaded.n'   'n Changes to the existing data could potentially invalidate any existing registration(s). Make sure to use the Cross-Reference file template before you attempt a new upload for this meeting.'
      'nnPress OK to overwrite the existing Cross Reference List, ornPress Cancel to abort the operation.'
   : arr[1]   ' meeting, '   'nscheduled for: '   arr[0].replace(/  /g, " ")
      '; data has been already uploaded.n'   'n Changes to the existing data could potentially invalidate any existing registration(s). Make sure to use the Cross-Reference file template before you attempt a new upload for this meeting.'
      'nnPress OK to overwrite the existing Cross Reference List, ornPress Cancel to abort the operation.';
  

Просто взглянув на это и увидев избыточность, я знаю, что делаю это неправильно или не лучшая практика. Но каким-то образом это работает, но только тогда, когда arr[2] имеет значение, потому что часть, в которой я проверяю длину arr[2], если ее нет, тогда код прерывается.

Возможно ли, чтобы кто-нибудь показал мне, как правильно использовать тернарный оператор для достижения этой цели?

Большое спасибо, Эрасмо.

Комментарии:

1. Чтобы [2] элемента «не было», arr.length значение было бы меньше 3.

2. Вам нужно проверить длину arr , а не третьего элемента. И поскольку предложение одно и то же, за исключением ввода, вы должны заставить свой троичный вывод вывести значение ввода и использовать его в предложении; вместо того, чтобы дублировать остаток

3. Изменить arr[2].length > 0 на arr.length > 2

Ответ №1:

 const prefix = (arr.length > 2 ? arr[1]   arr[2] : arr[1]);
const strWarningMsg = `${prefix} meeting,
scheduled for: ${arr[0].replace(/  /g, " ")}; data has been already uploaded.

Changes to the existing data could potentially invalidate any existing registration(s). Make sure to use the Cross-Reference file template before you attempt a new upload for this meeting.

Press OK to overwrite the existing Cross Reference List, ornPress Cancel to abort the operation.`;
  

Извлеките префикс и выведите его на основе количества элементов в массиве.
Кроме того, если вы измените свою строку на строковый литерал вместо этого, вы можете иметь буквальные новые строки в своей строке, а не n и сделать ее намного более читаемой.

Комментарии:

1. Потрясающе! Спасибо всем за вашу быструю и полезную помощь.