Short summary of methods covered:
concat(): Merges multiple arrays or values into a new array without modifying the original one.flat(): Flattens a multidimensional array to a specified depth and returns a new array.flatMap(): Maps each element using a provided function, then flattens the result into a new array.
Array.prototype.concat()
The concat() method creates a new array by merging multiple arrays or values without changing the old ones.
arr.concat(arg1, arg2, ...);- arg1, arg2, ...: Accepts any number of Arrays or values to merge with the current array.
let a = [1, 2, 3];
a.concat(4, 5);
// Result: [1, 2, 3, 4, 5]
a.concat([4, 5], [6, 7]);
// Result: [1, 2, 3, 4, 5, 6, 7]
a.concat(4, [5, [6, 7]]);
// Result: [1, 2, 3, 4, 5, [6, 7]]- Merging arrays: If any of the arguments is an array, the array’s elements are merged (not the array itself).
Example with strings:
const myGirls = ["Cel", "Lon"];
const myBoys = ["Em", "Lin"];
const myPets = ["cat", "Dog"];
const myChildren = myGirls.concat(myBoys);
// Result: ["Cel", "Lon", "Em", "Lin"]
const family = myGirls.concat(myBoys, myPets);
// Result: ["Cel", "Lon", "Em", "Lin", "cat", "Dog"]
const myKids = myGirls.concat("daisy");
// Result: ["Cel", "Lon", "daisy"]Important Notes:
concat()does not modify the original array but returns a new one.- While
concat()is convenient, it can be inefficient because it creates a new array. If you often modify arrays, consider usingpush()orsplice().
Array.prototype.flat(depth)
The flat() method creates a new array from a multidimensional array with all sub-array elements concatenated to a specified depth.
In ES2019, flat() flattens nested arrays to a specified depth and returns a new array.
arr.flat(depth);- depth (optional): The number of levels to flatten the array. The default is
1.
const myArray = [ [1,2], [3,4], [5,6] ];
const newArray = myArray.flat();
// Result: [1, 2, 3, 4, 5, 6]Flattening behavior:
- If you pass no argument to
flat(), it flattens the array by one level. - If you pass a number to
flat(depth), it flattens the array by the specified number of levels.
[1, [2, 3]].flat()
// Result: [1, 2, 3]
[1, [2, [3]] ].flat()
// Result: [1, 2, [3]]
let a = [1, [2, [3, [4]]]];
a.flat(1)
// Result: [1, 2, [3, [4]]]
a.flat(2)
// Result: [1, 2, 3, [4]]
a.flat(3)
// Result: [1, 2, 3, 4]
a.flat(4)
// Result: [1, 2, 3, 4]Array.prototype.flatMap(fn)
The flatMap() method first maps each element using the provided function and then flattens the result into a new array.
arr.flatMap(fn);- fn: A function that is called on each element in the array.
const myArray = [1, 2, 3, 4, 5, 6];
const newArray = myArray.flatMap(x => [x, x * 10]);
// Result: [1, 10, 2, 20, 3, 30, 4, 40, 5, 50, 6, 60]flatMap()works likemap()but flattens the resulting array automatically, which makes it more efficient than callingmap()followed byflat().
Example with strings:
let phrases = ["hello world", "the definitive guide"];
let words = phrases.flatMap(phrase => phrase.split(" "));
// Result: ["hello", "world", "the", "definitive", "guide"]Example with empty arrays:
// Map non-negative numbers to their square roots
[-2, -1, 1, 2].flatMap(x => x < 0 ? [] : Math.sqrt(x))
// Result: [1, 2**0.5]arr.flat(depth) / arr.flatMap(fn)
