Про рядки і масиви в JavaScript
При співбесіді в одній вельми і вельми великої російської 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, як нескладно здогадатися ріже масив на частини. Я не буду його описувати.
Розповісти друзям
Як працювати з рядками, як працювати з масивами, як об'єднувати рядки і масиви?Як розбити рядок на частини, по якому або ознакою?
Ще одним питанням в JS був такий: Як видалити елемент з масиву?