Tengo una matriz que se parece a:
const arr = [1,2,3,4,5,6]Quiero convertir esta matriz para que se vea algo como
const arr2 = [ {x: 1, y, 2}, {x:3, y:4}, {x:5, y:6}]He intentado algo como esto:
let res: any = []; const arr = [1,2,3,4,5,6] for (let i = 0; i < arr.length / 2; i++) { let next = 0 res.push({x : arr[i + next], y : arr[i+1+next]}) next += 2; }Pero esto no me da los resultados correctos.
const arr = [1, 2, 3, 4, 5, 6, 7] var result = []; for (var i = 0; i < arr.length; i += 2) { result.push({ x: arr[i], y: i + 1 < arr.length ? arr[i + 1] : undefined }) } console.log(result)convertToPoints = (arr) => { let arr2 = []; // if arr does not contain an even amount of elements, return false if (arr.length % 2 !== 0) { return false; } for (let i = 0; i < arr.length - 1; i += 2) { arr2.push({ x: arr[i], y: arr[i+1] }); } return arr2; }Puede obtener pares de matrices divididas y crear nuevos objetos con propiedades de mano abreviada.
const array = [1, 2, 3, 4, 5, 6], result = []; let i = 0; while (i < array.length) { const [x, y] = array.slice(i, i += 2); result.push({ x, y }); } console.log(result);Un mejor enfoque con un bucle simple.
const array = [1, 2, 3, 4, 5, 6], result = []; for (let i = 0; i < array.length; i += 2) { result.push({ x: array[i], y: array[1 + 1] }); } console.log(result);