Quiero fusionar los primeros elementos en dos matrices diferentes en uno.
var arr = []; var arr2 = []; var year = ["January 2022", "February 2022", "March 2022", "April 2022", "May 2022"]; var value = [600000, 900000, 180000, 600000, 300000]; year.forEach(element => { arr.push({year: element}); }); value.forEach(element2 => { arr2.push({value: element2}); });
El resultado que traté de lograr es este:
[ { year: "January 2022", value: 600000 }, { year: "February 2022", value: 900000 }, { year: "March 2022", value: 180000 }, { year: "April 2022", value: 600000 }, { year: "May 2022", value: 300000 } ];
Así que esto es lo que he intentado pero aún no obtengo el resultado esperado:
var merged = arr.concat(arr2); var newData = []; merged.forEach(element => { newData.push({year: element.year, value: element.value}); }); console.log(newData);
Siguiendo con tu lógica propongo esto:
var years = ["January 2022", "February 2022", "March 2022", "April 2022", "May 2022"]; var values = [600000, 900000, 180000, 600000, 300000]; function merger(years, values){ if (years.length != values.length){ console.log("Dog"); }else { let merged = []; for(i=0; i < years.length; i++ ){ merged[i] = {year: years[i], value: values[i]}; } return merged; } } console.log(merger(years, values));
¡funciona!
Podría tomar un objeto con claves deseadas y mapear los valores para obtener una matriz de objetos.
Este enfoque funciona para un número ilimitado de propiedades.
const getObjects = object => Object.entries(object).reduce((r, [k, a]) => a.map((v, i) => ({ ...r[i], [k]: v })), {}), year = ["January 2022", "February 2022", "March 2022", "April 2022", "May 2022"], value = [600000, 900000, 180000, 600000, 300000], result = getObjects({ year, value }); console.log(result);
Esto funcionará si la matriz de año y la matriz de valor tienen la misma longitud y las mismas posiciones:
var year = ["January 2022", "February 2022", "March 2022", "April 2022", "May 2022"]; var value = [600000, 900000, 180000, 600000, 300000]; var result = []; year.forEach((year, i) => result.push({year, value: value[i]}))