При собеседовании в одной весьма и весьма крупной российской 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, как несложно догадаться режет массив на части. Я не буду его описывать.