07.10.2020, 11:13
|
Кандидат Javascript-наук
|
|
Регистрация: 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".
,
Мой вопрос: ОТКУДА ВЗЯЛИСЬ ЗАПЯТЫЕ???
|
|
07.10.2020, 11:35
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
alert([1,2,3])
Пить меньше надо.
|
|
07.10.2020, 11:37
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Сообщение от laimas
|
alert([1,2,3])
|
А что это иллюстрирует?
alert(["a","b","c"].join("")) // "abc"
Сообщение от laimas
|
Пить меньше надо.
|
Вот и я JavaScript'у это говорю!
Последний раз редактировалось jaroslav.tavgen, 07.10.2020 в 11:42.
|
|
07.10.2020, 11:38
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
.match(/[^<^>]/g)
Найти все символы не равные "<", "^" или ">" по одному.
__________________
29375, 35
|
|
07.10.2020, 11:39
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Сообщение от Aetae
|
.match(/[^<^>]/g)
Найти все символы не равные "<", "^" или ">" по одному.
|
Верно, а запятые откуда (см. код, который я привёл в своём предыдущем сообщении)?
Последний раз редактировалось jaroslav.tavgen, 07.10.2020 в 11:43.
|
|
07.10.2020, 11:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от jaroslav.tavgen
|
Верно, а запятые откуда
|
От туда, это просто строковое представление массива, в котом каждый его элемент разделен строкой, это тоже самое как и Array.toString(). Почитайте доки.
Последний раз редактировалось laimas, 07.10.2020 в 11:51.
|
|
07.10.2020, 12:01
|
Кандидат Javascript-наук
|
|
Регистрация: 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.
|
|
07.10.2020, 12:11
|
Кандидат Javascript-наук
|
|
Регистрация: 18.09.2014
Сообщений: 128
|
|
Всё, сообразил. Я ошибся и join'ом соединял не результаты регулярного выражения, а параграфы.
Правильно должно быть так:
<p>privet</p>
<script>
alert([...document.getElementsByTagName("p")].map(e=>e.innerHTML.match(/[^<^>]/g).join("")))
</script>
|
|
07.10.2020, 12:21
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от jaroslav.tavgen
|
Я ошибся и join'ом
|
Я ваш join вообще мимо ушей пропустил )
|
|
07.10.2020, 15:48
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,796
|
|
Сообщение от jaroslav.tavgen
|
а запятые откуда
|
Разберитесь, как работает spread operator.
alert([...'asd']);
|
|
|
|