javascript arrays

javascript - Obtener el elemento en la matriz secundaria y volver a colocarlo en la matriz principal



arrays (7)

Utilice Array.prototype.reduce()

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ] var reduced_array = array_demo.reduce((reducedArray, elem) => { elem.shift() // Remove the first item return reducedArray.concat(elem) }, []) console.log(reduced_array)

Tengo un problema cuando obtengo el elemento en la matriz secundaria y lo vuelvo a colocar en la matriz principal mediante javascript. Tengo una matriz como esta:

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ]

Quiero obtener un resultado como este: [''1595'',''8886'',''1112'']

Pero cuando uso este código:

array_demo.map(function(i) { return i.slice(1).join(); });

Resultado: [''1595,8886'', ''1112'']

Alguien me puede ayudar ?


En lugar de join() use Array.prototype.flat() en el resultado devuelto de map() :

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ] array_demo = array_demo.map(function(i) { return i.slice(1); }).flat(); console.log(array_demo);

En un revestimiento usando la función de flecha (=>) :

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ] array_demo = array_demo.map(i => i.slice(1)).flat(); console.log(array_demo);


Puede desestructurar la matriz y tomar el resto sin el primer elemento y aplanar esta matriz usando Array.flatMap .

var array = [[''1st'', ''1595'', ''8886''], [''2nd'', ''1112'']], result = array.flatMap(([_, ...a]) => a); console.log(result);

Alternativamente, Array.slice() funciona también.

var array = [[''1st'', ''1595'', ''8886''], [''2nd'', ''1112'']], result = array.flatMap(a => a.slice(1)); console.log(result);


Puede usar Array.prototype.flat seguido de Array.prototype.filter para deshacerse de los datos no numéricos en sus submatrices:

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ]; const res = array_demo.flat().filter(n=> !isNaN(n)); console.log(res);

También podríamos hacerlo usando Array.prototype.reduce , si su objetivo es eliminar solo el objeto en el índice 0th :

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ]; const res = array_demo.reduce((r, [_, ...e]) => { r.push(...e); return r}, []); console.log(res);


También puede usar array.reduce y usarlo de la siguiente manera:

array_demo.reduce( function(prev, curr, index) { return prev.concat(curr.slice(1)); } ).slice(1);

La cosa es, array.map, devuelve el resultado para cada elemento de la matriz. Entonces, en su ejemplo, tiene dos ciclos:

  1. [''1st'', ''1595'', ''8886''] -> devuelve ''1595,8886'' porque usaste join ()
  2. [''2nd'', ''1112''] -> devuelve ''1112'' también porque usaste join ()

Y obtienes eso en una matriz -> [''1595,8886'', ''1112''].


array_demo.reduce ((acc, array_element) => acc.concat (array_element.slice (1)), [])


cuando necesitamos un solo valor acumulado, podemos usar funciones reducidas.

var array_demo = [ [''1st'', ''1595'', ''8886''], [''2nd'', ''1112''] ] var l = array_demo.reduce((val, item)=> { return val.concat(item.slice(1)); },[]); console.log(l);