При собеседовании в одной весьма и весьма крупной российской IT компании, интервьюеры задавали мне каверзные вопросы по JavaScript. Если на алгоритмические вопросы я отвечал без проблем, то на вопросах, связанных с нативными методами в JavaScript троках ответить я не смог. Просто потому, что привык везде и всегда гуглить необходимую информацию. и если мне понадобилось разбить в JavaScript строку на части, то я сразу гуглю

Разбить строку в JS

Возможно вы знаете ответ, как это делать, но лишней, информация, которую я изложу ниже точно не будет. Как работать со строками, как работать с массивами, как объединять строки и массивы?

Для начала ответим на вопрос выше. Как разбить строку на части, по какому либо признаку? У строк я JavaScript есть метод split

Если вы знакомы с php, то там есть некие аналоги explode и preg_split. Их в php две потому, что String.prototype.split может принимать, как строки, так и регулярные выражения, как и эти две функции из php соответственно.

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

console.log("мама мыла раму мылом".split(' '));//['мама','мыла','раму','мылом']

на выходе получится массив.

Усложним задачу и предположим, что разделителями могут быть пробелы, знаки препинания, переносы строки и табуляция.  

console.log("мама мыла,раму - мылом".split(/[\s\r\n,\.\?\-\(\)\*]+/));//['мама','мыла','раму','мылом']

На помощь пришло регулярно выражение.

Чтобы объединить массив обратно в строку, у массивов есть метод join, он аналогичен функции implode в php. Метод упаковывает массив в строку, подобно тому, как это делает упаковочный аппарат слева.

conole.log(['мама','мыла','раму','мылом'].join(' '));//мама мыла раму мылом

Наиболее частое задание при собеседовании на должность программиста такой: напишите функцию, которая перевернет строку наоборот. То есть

Иван мыл машину -> унишам лым нави 

теперь понятно, как Кемерон придумал свой язык Нави)))

В JavaScript для этого есть все, что нужно. Писать ничего не нужно. Из уже описанного выше, нам потребуется еще метод Array.prototype.reverse и тот факт, что методы String.prototype.split и Array.prototype.join могут иметь пустой аргумент при вызове.

'Иван мыл машину'.split('').reverse().join('') //унишам лым нави 

Читая магия или триумф JavaScript. 

Еще одним вопросом в JS был такой: Как удалить элемент из массива? 

Вопрос в подоплекой, дело в том, что если взять и сделать так

var a = [1,2,3,4,5];
delete a[2];

То размер итогового массива не изменится. Array.prototype.length указывает не на величину массива, а на индекс последнего элемента+1.

Поэтому в примере выше содержание a[2] будет удалено, но сам элемент из массива не исчезнет, а длинна массива останется равной 5.

Тут пригодится метод Array.prototype.splice не путать со  (Array.prototype.slice)

var a = [1,2,3,4,5];
a.splice(3,1) // [4]
console.log(a);//[1,2,3,5]

Обратите внимание, что метод возвращает другой массив - массив удаленных элементов. 

Метод Array.prototype.slice, как несложно догадаться режет массив на части. Я не буду его описывать.

Рассказать друзьям

Добавить комментарий


Защитный код
Обновить