Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.10.2020, 11:13
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

JavaScript, ты пьян, иди домой!
Прошу прощения за такой провокационный заголовок, просто именно эта фраза возникла у меня в голове когда я увидел следующее:

<p>privet</p>
<script>
alert([...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g)).join(""))
</script>


Результат - всплывает окно, где написано "p,r,i,v,e,t".
,
Мой вопрос: ОТКУДА ВЗЯЛИСЬ ЗАПЯТЫЕ???
Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2020, 11:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

alert([1,2,3])


Пить меньше надо.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2020, 11:37
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от laimas Посмотреть сообщение
alert([1,2,3])
А что это иллюстрирует?
alert(["a","b","c"].join("")) // "abc"

Сообщение от laimas Посмотреть сообщение
Пить меньше надо.
Вот и я JavaScript'у это говорю!

Последний раз редактировалось jaroslav.tavgen, 07.10.2020 в 11:42.
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2020, 11:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

.match(/[^<^>]/g)

Найти все символы не равные "<", "^" или ">" по одному.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2020, 11:39
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от Aetae Посмотреть сообщение
.match(/[^<^>]/g)

Найти все символы не равные "<", "^" или ">" по одному.
Верно, а запятые откуда (см. код, который я привёл в своём предыдущем сообщении)?

Последний раз редактировалось jaroslav.tavgen, 07.10.2020 в 11:43.
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2020, 11:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от jaroslav.tavgen
Верно, а запятые откуда
От туда, это просто строковое представление массива, в котом каждый его элемент разделен строкой, это тоже самое как и Array.toString(). Почитайте доки.

Последний раз редактировалось laimas, 07.10.2020 в 11:51.
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2020, 12:01
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Сообщение от laimas Посмотреть сообщение
От туда, это просто строковое представление массива, в котом каждый его элемент разделен строкой, это тоже самое как и Array.toString(). Почитайте доки.
Непохоже.

Смотрите:

["p","r","i","v","e","t"].join("") // "privet"
[...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g)).join("") // "p,r,i,v,e,t".

И там и там строковый массив, а результат разный.

Последний раз редактировалось jaroslav.tavgen, 07.10.2020 в 12:07.
Ответить с цитированием
  #8 (permalink)  
Старый 07.10.2020, 12:11
Кандидат Javascript-наук
Отправить личное сообщение для jaroslav.tavgen Посмотреть профиль Найти все сообщения от jaroslav.tavgen
 
Регистрация: 18.09.2014
Сообщений: 128

Всё, сообразил. Я ошибся и join'ом соединял не результаты регулярного выражения, а параграфы.

Правильно должно быть так:

<p>privet</p>
<script>
alert([...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g).join("")))
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 07.10.2020, 12:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от jaroslav.tavgen
Я ошибся и join'ом
Я ваш join вообще мимо ушей пропустил )
Ответить с цитированием
  #10 (permalink)  
Старый 07.10.2020, 15:48
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,796

Сообщение от jaroslav.tavgen
а запятые откуда
Разберитесь, как работает spread operator.

alert([...'asd']);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Интерпретатор Java на JS kobezzza Оффтопик 24 11.10.2012 18:32
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34