HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since enero de 2020.
Experimental: Esta es una tecnología experimentalComprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producción.
El método flat() crea una nueva matriz con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.
flat()
const arr1 = [0, 1, 2, [3, 4]]; console.log(arr1.flat()); // expected output: Array [0, 1, 2, 3, 4] const arr2 = [0, 1, [2, [3, [4, 5]]]]; console.log(arr2.flat()); // expected output: Array [0, 1, 2, Array [3, Array [4, 5]]] console.log(arr2.flat(2)); // expected output: Array [0, 1, 2, 3, Array [4, 5]] console.log(arr2.flat(Infinity)); // expected output: Array [0, 1, 2, 3, 4, 5]
var newArray = arr.flat([depth]);
depth
El nivel de profundidad que especifica qué tan profunda debe aplanarse una estructura de matriz anidada. El valor predeterminado es 1.
Una nueva matriz con los elementos de la sub-matriz concatenados en ella.
var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, 4, [5, 6]]]; arr2.flat(); // [1, 2, 3, 4, [5, 6]] var arr3 = [1, 2, [3, 4, [5, 6]]]; arr3.flat(2); // [1, 2, 3, 4, 5, 6]
El método de aplanar elimina las ranuras vacías en las matrices:
var arr4 = [1, 2, , 4, 5]; arr4.flat(); // [1, 2, 4, 5]
reduce
concat
var arr1 = [1, 2, [3, 4]]; arr1.flat(); //aplanar una matriz de nivel único arr1.reduce((acc, val) => acc.concat(val), []); // [1, 2, 3, 4] //o const flatSingle = (arr) => [].concat(...arr);
//para permitir el aplanamiento a nivel profundo use recursión con reduce y concat var arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]]; function flattenDeep(arr1) { return arr1.reduce( (acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), [], ); } flattenDeep(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
//aplanamiento profundo no recursivo usando un stack var arr1 = [1, 2, 3, [1, 2, 3, 4, [2, 3, 4]]]; function flatten(input) { const stack = [...input]; const res = []; while (stack.length) { // elimina ultimo valor del stack const next = stack.pop(); if (Array.isArray(next)) { // agrega de nuevo los items al array, sin modificar la entrada original stack.push(...next); } else { res.push(next); } } //invierte para restaurar el orden de entrada return res.reverse(); } flatten(arr1); // [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]
//Aplanamiento profundo recursivo function flatten(array) { var flattend = []; !(function flat(array) { array.forEach(function (el) { if (Array.isArray(el)) flat(el); else flattend.push(el); }); })(array); return flattend; }
if (!Array.prototype.flat) { Array.prototype.flat = function (depth) { var flattend = []; (function flat(array, depth) { for (let el of array) { if (Array.isArray(el) && depth > 0) { flat(el, depth - 1); } else { flattend.push(el); } } })(this, Math.floor(depth) || 1); return flattend; }; }
Enable JavaScript to view this browser compatibility table.
Array.prototype.flatMap()
Array.prototype.map()
Array.prototype.reduce()
Array.prototype.concat()