Про рядки і масиви в 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 був такий: Як видалити елемент з масиву?