esta es mi matriz
{"idSect":55, "DenumireSect":null, "idSpec":55, "denumireSpece":"Hematologie"}, {"idSect":32, "DenumireSect":null, "idSpec":27, "denumireSpece":"Dermatovenerologie"}, {"idSect":21, "DenumireSect":null, "idSpec":57, "denumireSpece":"Medicina nucleara"}, {"idSect":53, "DenumireSect":null, "idSpec":32, "denumireSpece":"Medicina naturista"}, {"idSect":null, "DenumireSect":null, "idSpec":1, "denumireSpec":"Cardiologie"}, {"idSect":null, "DenumireSect":null, "idSpec":59, "denumireSpec":"Psihiatrie pediatrica"},A partir de él, quiero obtener una matriz calculada que se vea así:
{"idSpec":55, "nameSpec":"Hematologie", "leg": true}, {"idSpec":27, "nameSpec":"Dermatovenerologie", "leg": true}, {"idSpec":57, "nameSpec":"Medicina nucleara", "leg": true}, {"idSpec":32, "nameSpec":"Medicina naturista", "leg": true}, {"idSpec":1, "nameSpec":"Cardiologie", "leg": false}, {"idSpec":59, "nameSpec":"Psihiatrie pediatrica", "leg": false},Quiero que el atributo 'pierna' solo sea verdadero si el 'idSect' de ese objeto no es nulo.
¿Cómo puedo hacer esto en una propiedad calculada?
Lo único que realmente necesitaría hacer es reasignar su matriz con los valores que le gustaría y llamarlo en su propiedad calculada. Puede usar array.prototype.map() en JAvascript, la función de mapa crea una nueva matriz llamando a una función para cada elemento de la matriz, en este caso reasignando nuestros valores.
Dada la matriz anterior que se traduciría en:
var exampleArr = [{"idSect":55, "DenumireSect":null, "idSpec":55, "denumireSpece":"Hematologie"}, {"idSect":32, "DenumireSect":null, "idSpec":27, "denumireSpece":"Dermatovenerologie"}, {"idSect":21, "DenumireSect":null, "idSpec":57, "denumireSpece":"Medicina nucleara"}, {"idSect":53, "DenumireSect":null, "idSpec":32, "denumireSpece":"Medicina naturista"}, {"idSect":null, "DenumireSect":null, "idSpec":1, "denumireSpec":"Cardiologie"}, {"idSect":null, "DenumireSect":null, "idSpec":59, "denumireSpec":"Psihiatrie pediatrica"}] var remappedArr = exampleArr.map(x => ({idSpec: x.idSpec, nameSpec: x.denumireSpece , leg: Boolean(x.idSect)}) );Lo que a su vez dará como resultado la siguiente estructura (no estoy seguro si por diseño, pero 'denumireSpece' pierde una 'e' en algunos objetos).
[ { idSpec: 55, nameSpec: 'Hematologie', leg: true }, { idSpec: 27, nameSpec: 'Dermatovenerologie', leg: true }, { idSpec: 57, nameSpec: 'Medicina nucleara', leg: true }, { idSpec: 32, nameSpec: 'Medicina naturista', leg: true }, { idSpec: 1, nameSpec: undefined, leg: false }, { idSpec: 59, nameSpec: undefined, leg: false } ]Lo único que quedaría sería crear una propiedad calculada en vuejs.
computed: { myArray: { get() { return this.myArray.map(x => ({idSpec: x.idSpec, nameSpec: x.denumireSpece , leg: Boolean(x.idSect)}) ); }, } }Prueba esto:
const arr = [ { idSect: 55, DenumireSect: null, idSpec: 55, denumireSpece: 'Hematologie' }, { idSect: 32, DenumireSect: null, idSpec: 27, denumireSpece: 'Dermatovenerologie'}, { idSect: 21, DenumireSect: null, idSpec: 57, denumireSpece: 'Medicina nucleara' }, { idSect: 53, DenumireSect: null, idSpec: 32, denumireSpece: 'Medicina naturista'}, { idSect: null, DenumireSect: null, idSpec: 1, denumireSpece: 'Cardiologie' }, { idSect: null, DenumireSect: null, idSpec: 59, denumireSpece: 'Psihiatrie pediatrica' }, ] const newArray = arr.map(({ idSect, idSpec, denumireSpece }) => ({ idSpec, nameSpec: denumireSpece, leg: Boolean(idSect), })) console.log(newArray)let arr = [ { idSect: 55, DenumireSect: null, idSpec: 55, denumireSpece: "Hematologie" }, { idSect: 32, DenumireSect: null, idSpec: 27, denumireSpece: "Dermatovenerologie", }, { idSect: 21, DenumireSect: null, idSpec: 57, denumireSpece: "Medicina nucleara", }, { idSect: 53, DenumireSect: null, idSpec: 32, denumireSpece: "Medicina naturista", }, { idSect: null, DenumireSect: null, idSpec: 1, denumireSpec: "Cardiologie" }, { idSect: null, DenumireSect: null, idSpec: 59, denumireSpec: "Psihiatrie pediatrica", }, ]; let newArr = []; arr.map((item) => { if (item.idSect !== null) { newArr.push({ ...item, leg: true }); } }); console.log(newArr);