Tengo una matriz de cadenas, por ejemplo const array1 = ["124542", "112244", "112245", "112246"];
Quiero crear los siguientes resultados:
const array2 = [ { "comparableId": "124542", "comparatorId": "112244" }, { "comparableId": "112244", "comparatorId": "112245" }, { "comparableId": "112245", "comparatorId": "112246" } ] En esta matriz2, el primer valor de índice de la matriz1 está con el segundo valor, el segundo valor con el tercero y el tercero con el cuarto y así sucesivamente. Este array1 es dinámico y puede tener solo 1 valor, por ejemplo, const array1 = ["124542"]; y puede tener cualquier número de valores.
He intentado usar los métodos de reduce y asignación de map Script.
const array2 = array1.map((value, index) => { return { comparableId: value, comparatorId: array1[index + 1] || '', }; });¿Hay alguna otra buena manera de hacerlo?
Usar un bucle for es probablemente lo más fácil aquí.
const array1 = ["124542", "112244", "112245", "112246"]; const transform = (array) => { const result = []; for (let i = 0; i === 0 || i < array.length - 1; ++i) { result.push({ comparableId: array[i], comparatorId: array[i + 1] ?? "", }) } return result; }; console.log(transform(array1)); console.log(transform(["124542"])); const array1 = ["124542", "112244", "112245", "112246"]; let array2 = []; array1.map((item, index) =>{ array2.push({comparableId: item, comparatorId: array1[index+1] || ""}) }) console.log(array2)Totalmente declarativo, sin solución de mutaciones.
const array1 = ["124542", "112244", "112245", "112246"], array2 = [...Array(Math.ceil(array1.length / 2))].map((_, i) => ({comparableId: array1[i * 2], comparatorId: array1[i * 2 + 1] ?? ""}) ); console.log(array2);