const mydata = { message: 'Hello Vues!', language: { en: {show: false, displayname: "English"}, ja: {show: true, displayname: "Japanese"}, zh: {show: false, displayname: "Chinese"}, } }
Me gustaría recorrer el objeto 'idioma', apuntar a sus hijos y cambiar todas sus propiedades "mostrar" a falso.
El objetivo es el siguiente:
const mydata = { message: 'Hello Vues!', language: { en: {show: false, displayname: "English"}, ja: {show: false, displayname: "Japanese"}, zh: {show: false, displayname: "Chinese"}, } }
Estoy mirando Object.entries
y puedo extraer las 3 claves (que son en, ja y zh).
for (const [key, value] of Object.entries(mydata.language)) { console.log(key); //----> gets names of keys console.log(key.displayname);//----> undefined }
Sin embargo, parece que no puedo hacer referencia a ellos, recorrer sus hijos y cambiar los 3 registros de "mostrar" en falso.
¿Estoy viendo el comando incorrecto aquí?
Simplemente puede recorrer el valor de mydata.language
con la ayuda de forEach
y hacer que show
tan false
como:
Object.values(mydata.language).forEach((o) => o.show = false);
const mydata = { message: 'Hello Vues!', language: { en: { show: false, displayname: 'English' }, ja: { show: true, displayname: 'Japanese' }, zh: { show: false, displayname: 'Chinese' }, }, }; Object.values(mydata.language).forEach((o) => o.show = false); console.log(mydata);
/* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }
puedes usar
mydata.language[key].show = false;
O
value.show = false;
Puede lograr esto a través del método Object.keys
que devolverá una matriz de nombres de propiedad enumerables propios de un objeto dado, seguido del método forEach
que ejecutará una función proporcionada una vez para cada elemento de la matriz. En esa función, establecerá el valor de show
en falso.
const mydata = { message: 'Hello Vues!', language: { en: {show: false, displayname: "English"}, ja: {show: true, displayname: "Japanese"}, zh: {show: false, displayname: "Chinese"}, } } Object.keys(mydata.language).forEach(x => mydata.language[x].show = false); console.log(mydata);