Персональный блог Игоря Антонова aka "spider_net"

Как вывести содержимое массива без использования циклов в JavaScript?


Рубрика: Программирование -> JavaScript
Метки: | |
Просмотров: 23546
Как вывести содержимое массива без использования циклов в JavaScript?

Один из читателей блога обратился ко мне по почте с вопросом: «Как вести содержимое массива в JavaScript без использования циклов?». Не знаю, зачем ему это понадобилось, но смею предположить, что речь идет о тестовом задании для собеседования. Я никогда не работал JavaScript-разработчиком. Изучал этот язык сугубо для личных целей, поэтому возможно чего-то не знаю, но если бы я столкнулся с этой задачей, то применил бы один из следующих способов.

Метод join()

У массивов в JavaScript есть метод join(). Он возвращает содержимое массива в виде строки (по умолчанию через запятую). В качестве единственного параметра методу можно передать строку-разделитель. Таким образом, элементы массива реально выводить не только через запятую, но и любой другой символ (символы). Рассмотрим несколько примеров:

var myArray = [1111, 5, 3, 4, 5];
myArray.join(); //Результатом будет строка 1111,5,3,4,5
myArray.join("/"); //Результатом будет строка 1111/5/3/4/5
myArray.joun("-#-"); //Результатом будет строка 1111-#-5-#-3-#-4-#-5

Если автор не утаил дополнительных условий, то задача легко решается применением метода join().

Методы toString(), valueOf()

Практически аналогичного результата можно добиться с помощью унаследованных от Object методов toString() и valueOf(). Отличие от join() – отсутствует возможность изменить разделитель. Точней говоря, разделить изменить можно, но для этого придется перекрывать метод собственной реализацией. Смотрим примеры:

myArray.toString(); // 1111,5,3,4,5
myArray.valueOf(); //[ 1111, 5, 3, 4, 5 ]

Возможно, есть еще какие-нибудь способы вывести содержимое массива без применения циклов, но я их не знаю. Если среди посетителей блога есть профи в JavaScript, то буду рад услышать ваши комментарии.

Оставьте комментарий!
comments powered by HyperComments