We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Esta es una tecnología experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producción.

El método flatten() crea una nueva matriz con todos los elementos de sub-array concatenados recursivamente hasta la profundidad especificada.

Nota: El nombre de este método (flatten) se está evaluando actualmente debido a problemas de compatibilidad web. Ver error 1443630 y tc39/proposal-flatMap#56.

Sintaxis

var newArray = arr.flatten(depth)

Parámetros

depth Optional
El nivel de profundidad que especifica qué tan profunda debe aplanarse una estructura de matriz anidada. El valor predeterminado es 1.

Valor de retorno

Una nueva matriz con los elementos de sub-matriz concatenados en ella.

Ejemplos

Aplanar matrices anidadas

var arr1 = [1, 2, [3, 4]];
arr1.flatten(); 
// [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flatten();
// [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flatten(2);
// [1, 2, 3, 4, 5, 6]

Aplanamiento y huecos de matriz

El método de aplanar elimina las ranuras vacías en las matrices:

var arr4 = [1, 2, , 4, 5];
arr4.flatten();
// [1, 2, 4, 5]
 

Alternativa

reduce y concat

var arr1 = [1, 2, [3, 4]];
arr1.flatten();

//aplanar una matriz de nivel único
arr1.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]

//para permitir el nivel profundo aplanar el uso 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), []);
})(arr1);

// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]


Especificaciones

Especificación Estado Comentario
Array.prototype.flatten proposal Borrador  

Compatibilidad con navegadores

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Soporte básico No No No1 No No No
FeatureAndroid webviewChrome para AndroidEdge mobileFirefox para AndroidOpera AndroidiOS SafariSamsung Internet
Soporte básico No No No No1 No No No

1. Available in Firefox Nightly only. See bug 1435813 for status on enabling this by default.

Ver también

Etiquetas y colaboradores del documento

Colaboradores en esta página: lajaso
Última actualización por: lajaso,