Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке псевдомасив?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Псевдомасив (array-like object)** - це об'єкт, який виглядає як масив, але не є справжнім масивом: він має числові індекси (`0`, `1`, `2`, ...) та властивість `length`, але не має методів масиву (`push`, `map`, `forEach` тощо). **Ключове:** щоб працювати з ним як зі звичайним масивом, його можна перетворити через `Array.from()` або `[...spread]`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Псевдомасив (array-like object) - це об'єкт, який **виглядає як масив**, але **не є справжнім масивом**. Він має: 1. **числові індекси** (`0`, `1`, `2`, ...), 2. **властивість** `length`, 3. але **не має методів масиву** (`push`, `map`, `forEach` тощо). --- ## Приклади псевдомасивів: ### 1. `arguments` всередині функції ```javascript function showArgs() { console.log(arguments); } showArgs(10, 20, 30); // Arguments(3) [10, 20, 30, callee: ƒ, Symbol(Symbol.iterator): ƒ] ``` `arguments` **виглядає як масив**, але: ```javascript console.log(arguments[0]); // 10 console.log(arguments.length); // 3 console.log(arguments.map); // undefined ``` --- ### 2. Колекції з DOM ```javascript const divs = document.querySelectorAll("div"); console.log(divs); ``` `NodeList` і `HTMLCollection` - це теж **псевдомасиви**. Вони містять елементи за індексами і `length`, але не мають методів `map`, `filter` тощо. --- ## Чому це не масив Справжній масив успадковує методи від `Array.prototype`, а псевдомасив - **ні**. ```javascript Array.isArray(arguments); // false ``` --- ## Як перетворити псевдомасив на справжній масив ### 1. Через `Array.from()` ```javascript function demo() { const arr = Array.from(arguments); console.log(Array.isArray(arr)); // true } demo(1, 2, 3); ``` --- ### 2. Через spread-оператор (`...`) ```javascript function demo() { const arr = [...arguments]; console.log(arr); // [1, 2, 3] } demo(1, 2, 3); ``` --- ### 3. Через `slice.call()` ```javascript function demo() { const arr = Array.prototype.slice.call(arguments); console.log(arr); // [1, 2, 3] } demo(1, 2, 3); ``` --- ## Коротко: | Властивість | Псевдомасив | Справжній масив | |---|---|---| | Є числові індекси | Так | Так | | Є `length` | Так | Так | | Є методи (`map`, `push`, `filter`) | Ні | Так | | `Array.isArray()` повертає `true` | Ні | Так | --- ## Приклади псевдомасивів у JavaScript: | Джерело | Тип | |---|---| | `arguments` | псевдомасив аргументів функції | | `document.querySelectorAll()` | `NodeList` | | `document.getElementsByClassName()` | `HTMLCollection` | | `FileList` | список файлів з `<input type="file">` | --- > **Підсумок:** > **Псевдомасив** - це об'єкт, схожий на масив за структурою > (`індекси + length`), > але **без методів масиву**. > > Щоб працювати з ним як зі звичайним масивом, > можна перетворити його через `Array.from()` або `[...spread]`.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.