Cómo convertir este valor de cadena de matriz en una matriz.
data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"]la salida esperada debería ser así:
data = { genStatus: ["INPROGRESS","DONE"], status: ["ACTIVE", "DEACTIVATE"] }o debería ser así
data = [{ name: 'genStatus', data: [{name: 'INPROGRESS'}, {name: 'DONE'}]}, { name: 'status', data: [{name: 'ACTIVE'}, {name: 'DEACTIVATE'}]}] const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] const transformed = data.reduce((object, item) => { // get key and value const [key, value] = item.split(' ') // assign key and split value object[key] = value.split(',') return object }, {}) console.log(transformed) const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] const transformed = data.map(item => { const [key, value] = item.split(' ') return { name: key, data: value.split(',').map(value => ({ name: value })) } }) console.log(transformed)Compartí mi enfoque aquí. Espero que lo entiendas.
const data = ["genStatus: INPROGRESS,DONE", "status: ACTIVE,DEACTIVATE"] // Approach 1 const obj = data.reduce((acc, curr) => { const [key, data] = curr.split(":") acc[key] = data.trim().split(",") return acc; }, {}) console.log(obj) // Approach 2 const obj2 = data.map(el => { const [key, data] = el.split(":") const obj = {}; const dataArray = data.trim().split(",").map(d => ({ name: d })) obj[key] = dataArray return obj; }) console.log(obj2)Esto es lo que se me ocurrió:
function parse_data(data) { var result = {} data.forEach(e => { e = e.split(":"); var key = e[0]; var value = []; e[1].split(",").forEach(x => {value.push(x.trim())}); result[key] = value; }); return result; }Producción:
{"genStatus":["INPROGRESS","DONE"],"status":["ACTIVE","DEACTIVATE"]}Otro método:
function another_parse_data(data) { var result = [] data.forEach(e => { e = e.split(":"); var key = e[0]; var value = []; e[1].split(",").forEach(x => {value.push({"name": x.trim()})}); var presult = {} presult["name"] = key presult["data"] = value result.push(presult) }); return result; }Producción:
[{"name":"genStatus","data":[{"name":"INPROGRESS"},{"name":"DONE"}]},{"name":"status","data":[{"name":"ACTIVE"},{"name":"DEACTIVATE"}]}]