--- title: Arrays description: image: tags: js lintConfig: MD004: style: "consistent" MD006: false published: false --- # Creating Arrays ## `Array.from()` The `Array.from()` static method creates a new, shallow-copied `Array` instance from an array-like or iterable object. ```javascript= Array.from('hello')); // Array [ "h", "e", "l", "l", "o" ] Array.from([1, 2, 3, 4], x => x ** x)) // Array [1, 4, 27, 256] ``` `Array.from()` lets you create Arrays from: * array-like objects (objects with a `length` property and indexed elements) * iterable objects (objects such as `Map` and `Set`). ## `Array.isArray()` The Array.isArray() method determines whether the passed value is an Array. ### `instanceof` vs `isArray` When checking for Array instance, `Array.isArray` is preferred over `instanceof` because it works through iframes. ```javascript= const iframe = document.createElement('iframe'); document.body.appendChild(iframe); xArray = window.frames[window.frames.length-1].Array; const arr = new xArray(1,2,3); // [1,2,3] // Correctly checking for Array Array.isArray(arr); // true // Considered harmful, because doesn't work through iframes arr instanceof Array; // false ``` ## `Array.of()` The Array.of() method creates a new Array instance from a variable number of arguments, regardless of number or type of the arguments. The difference between Array.of() and the Array constructor is in the handling of integer arguments: Array.of(7) creates an array with a single element, 7, whereas Array(7) creates an empty array with a length property of 7. (That implies an array of 7 empty slots, not slots with actual undefined values.)