Tengo dos matrices como:
descriptionList: ["First", "Second", "Last"] statusList: ["Jon", "Jim", "Den"]Quiero crear una lista de objetos, como esta:
"subtasks": [ { "description": First, "status": "Jon" }, { "description": Second, "status": "Jim" }, .... ],Las listas pueden tener más de 3 elementos.
Lo que he probado es esto:
var result = {}; descriptionList.forEach((key, i) => result[key] = statusList[i]); console.log('result', result);Lo que imprime es este, que no es lo que quiero:
{ First: "Jon", Second: "Jim", Last: "Den" }Puede comprimir ambas matrices y usar el map para crear la estructura esperada:
function zip(arr1, arr2) { return Array(Math.max(arr1.length, arr2.length)).fill(0).map((_, idx) => ([arr1[idx], arr2[idx]])); } const data = { descriptionList: ["First", "Second", "Last"], statusList: ["Jon", "Jim", "Den"] }; const result = { subtasks: zip(...Object.values(data)).map(el => ({ description: el[0], status: el[1] })) }; console.log(result);