tengo una matriz,
let arr =[{SLNO:1, modules:[{id:1, name:DTR},{id:5, name:DYR},{id:8, name:YUR}]}, {SLNO:2, modules:[{id:6, name:DTTR},{id:9, name:TTDYR}]}]Quiero agregar una nueva matriz a esta matriz con ID de módulos como,
let newarr =[{SLNO:1, modules:[{id:1, name:DTR},{id:5, name:DYR},{id:8, name:YUR}], mIDS:[1,5,8]}, {SLNO:2, modules:[{id:6, name:DTTR},{id:9, name:TTDYR}], mIDS:[6,9]}]¿Cómo escribir así?
Puede utilizar los forEach (documentación) y map (documentación)
const arr = [{ SLNO: 1, modules: [ {id: 1,name: "DTR"}, {id: 5, name: "DYR"}, {id: 8,name: "YUR"} ] }, { SLNO: 2, modules: [ {id: 6,name: "DTTR"}, {id: 9,name: "TTDYR"} ] } ] arr.forEach(item => { const ids = item.modules.map(x => x.id) item.mIDS = ids }) console.log(arr)También puede hacerlo usando la función Array#Map . Tiene los beneficios de no modificar la matriz existente y generar una nueva.
const arr = [{ SLNO: 1, modules: [ {id: 1,name: "DTR"}, {id: 5, name: "DYR"}, {id: 8,name: "YUR"} ] }, { SLNO: 2, modules: [ {id: 6,name: "DTTR"}, {id: 9,name: "TTDYR"} ] } ] const newArr = arr.map(item => ({...item, mIDS: item.modules.map(x => x.id)})) console.log(newArr)Puedes lograr esto usando el mapa
let arr = [{ SLNO: 1, modules: [{ id: 1, name: 'DTR' }, { id: 5, name: 'DYR' }, { id: 8, name: 'YUR' }] }, { SLNO: 2, modules: [{ id: 6, name: 'DTTR' }, { id: 9, name: 'TTDYR' }] } ] arr.map((item) => { item.mIDS = item.modules.map((item) => item.id) return item }) console.log(arr)