Actualmente estoy tratando de generar un nuevo orden de números a partir de una matriz actual con números del 1 al 10.
Por ejemplo, tengo una matriz como esta:
data = [ { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6 }, { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 8 } ]
Y estoy tratando de generar un nuevo orden a partir de esta matriz a partir de números del 1 al 10.
Por ejemplo: quiero que genere un nuevo pedido como este:
0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 7 (The new number)
Donde verifica el orden de la matriz y crea un nuevo orden con números del 1 al 10
Lo primero que debe hacer es crear un objeto con los valores totales. Podemos lograr esto recorriendo cada objeto en la matriz y agregando cada valor a un nuevo objeto. Para esto podemos usar el método de reduce
en la matriz de data
.
Después de eso, recorra el objeto con los totales y divida cada valor con la cantidad de objetos que están presentes en la matriz de data
.
Use Math.round()
para redondear cada valor al número entero más cercano.
const data = [{ 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6 }, { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 8 } ]; function getDataTotal(data) { const totalObject = data.reduce((total, curObj) => { for (const key of Object.keys(curObj)) { total[key] = total[key] ? total[key] + curObj[key] : curObj[key]; } return total; }, {}); const averageObject = {}; for (const [key, value] of Object.entries(totalObject)) { averageObject[key] = Math.round(value / data.length); } return averageObject; } const averageObject = getDataTotal(data); console.log(averageObject);
Asegúrese de tener las mismas claves en ambos objetos.
const data = [ {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6}, {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 8}, ] getAverageValueOfMappingElements() { const keys = Object.keys(data[0]) return [...keys].map(key => { return (data[0][key] + data[1][key]) / 2 }) }