Object for a javascript array

0

I have an object with the following values:

let sel = { 
    "1": { "id_turma": 485, "codigo_turma": "1112A - 41", "ano_ciclo": 14 }, 
    "2": { "id_turma": 486, "codigo_turma": "1112B - 27", "ano_ciclo": 18 }, 
    "3": { "id_turma": 487, "codigo_turma": "1112C - 24", "ano_ciclo": 14 }
}

I need to transform into an array like this:

valor['1112A'] => 14
valor['1112B'] => 18
valor['1112C'] => 14

I've tried it like this:

let val = []

sel.forEach(function(ix) {
    if(ix.value) {
        val[ix.value] = ix.ano_ciclo
    }
})

It's not working out

    
asked by anonymous 14.08.2018 / 18:54

3 answers

5

To use forEach , your object must be a [] array, as it is an object of objects, you can use # for this:

let sel = { 
    "1": { "id_turma": 485, "codigo_turma": "1112A - 41", "ano_ciclo": 14 }, 
    "2": { "id_turma": 486, "codigo_turma": "1112B - 27", "ano_ciclo": 18 }, 
    "3": { "id_turma": 487, "codigo_turma": "1112C - 24", "ano_ciclo": 14 }
}

let  valor = [];

Object.entries(sel).forEach(([o, v]) => {
    valor[v.codigo_turma.substring(0,5)] = v.ano_ciclo;
});

console.log(valor["1112A"]);
console.log(valor["1112B"]);
console.log(valor["1112C"]);
    
14.08.2018 / 19:11
3

Another way is to use the map, see how it would look:

let sel = { 
    "1": { "id_turma": 485, "codigo_turma": "1112A - 41", "ano_ciclo": 14 }, 
    "2": { "id_turma": 486, "codigo_turma": "1112B - 27", "ano_ciclo": 18 }, 
    "3": { "id_turma": 487, "codigo_turma": "1112C - 24", "ano_ciclo": 14 }
}

sel = Object.keys(sel).map(key =>
    ({ [sel[key].codigo_turma.split('-')[0].trim()]: sel[key].ano_ciclo })
);

console.log(sel);
    
14.08.2018 / 19:16
2

let sel = {
  "1": {
    "id_turma": 485,
    "codigo_turma": "1112A - 41",
    "ano_ciclo": 14
  },
  "2": {
    "id_turma": 486,
    "codigo_turma": "1112B - 27",
    "ano_ciclo": 18
  },
  "3": {
    "id_turma": 487,
    "codigo_turma": "1112C - 24",
    "ano_ciclo": 14
  }
};

let val = [];

Object.values(sel).forEach(function(ix) {
  val[ix.codigo_turma.split(' ')[0]] = ix.ano_ciclo
});

console.log('val[\'1112A\']:', val['1112A']);
console.log('val[\'1112B\']:', val['1112B']);
console.log('val[\'1112C\']:', val['1112C']);
    
14.08.2018 / 19:17