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:
- [''1st'', ''1595'', ''8886''] -> devuelve ''1595,8886'' porque usaste join ()
- [''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);