#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. Потрясающе! Спасибо всем за вашу быструю и полезную помощь.