Recorrer Objeto JSON

publicado por: Anonymous

Tengo este json:

var json =    {
     "0":{
       "check":true,
       "OBJECT_ID":{
         "check":false,
         "name":"OBJECT_ID",
         },
      "nameTable":"TEST1",
      "EVENT_NAME_MANAGE":{
         "check":false,
         "name":"EVENT_NAME_MANAGE",
      }}
     "1":{
      "check":true,
      "OBJECT_ID":{
         "check":false,
         "name":"OBJECT_ID",
      },
      "nameTable":"TEST1",
      "EVENT_NAME_MANAGE":{
         "check":false,
         "name":"EVENT_NAME_MANAGE",
      }
     }
    }

Quisiera que si me llega 0 o 1, cambiar el valor de ObJECT_ID y EVENT_NAME a true

He probado hacer este for :

    for (var i in json) {
        console.log(json[i].nameTable)
    }

Segun me pasen 0 o 1, tengo que recorrer lo que hay dentro de ellos(en mi ejemplo solo tengo 2 el ObJECT_ID y EVENT_NAME pero tengo muchos más) y cambair el valor de check que hay dentro de ellos por true

solución

Comprueba el siguiente programa. En él se comprueba la existencia de la propiedad check de cada elemento para asignarle true en caso afirmativo.

_x000D_

_x000D_

let json = {_x000D_
      "0":{_x000D_
       "check":true,_x000D_
       "OBJECT_ID":{_x000D_
         "check":false,_x000D_
         "name":"OBJECT_ID",_x000D_
         },_x000D_
      "nameTable":"TEST1",_x000D_
      "EVENT_NAME_MANAGE":{_x000D_
         "check":false,_x000D_
         "name":"EVENT_NAME_MANAGE",_x000D_
      }},_x000D_
     "1":{_x000D_
      "check":true,_x000D_
      "OBJECT_ID":{_x000D_
         "check":false,_x000D_
         "name":"OBJECT_ID",_x000D_
      },_x000D_
      "nameTable":"TEST1",_x000D_
      "EVENT_NAME_MANAGE":{_x000D_
         "check":false,_x000D_
         "name":"EVENT_NAME_MANAGE",_x000D_
      }_x000D_
     }_x000D_
    };_x000D_
 _x000D_
for (let i in json) {_x000D_
  for (let j in json[i]) {_x000D_
    if (json[i][j].hasOwnProperty('check')) {_x000D_
      json[i][j].check = true;_x000D_
    }_x000D_
  }_x000D_
}_x000D_
_x000D_
console.log("Mostrando resultado final:");_x000D_
console.log(json);

_x000D_

_x000D_

_x000D_

Según la edición que me proporcionas, es más eficiente hacer lo siguiente:

_x000D_

_x000D_

let json = {_x000D_
      "0":{_x000D_
       "check":true,_x000D_
       "OBJECT_ID":{_x000D_
         "check":false,_x000D_
         "name":"OBJECT_ID",_x000D_
         },_x000D_
      "nameTable":"TEST1",_x000D_
      "EVENT_NAME_MANAGE":{_x000D_
         "check":false,_x000D_
         "name":"EVENT_NAME_MANAGE",_x000D_
      }},_x000D_
     "1":{_x000D_
      "check":true,_x000D_
      "OBJECT_ID":{_x000D_
         "check":false,_x000D_
         "name":"OBJECT_ID",_x000D_
      },_x000D_
      "nameTable":"TEST1",_x000D_
      "EVENT_NAME_MANAGE":{_x000D_
         "check":false,_x000D_
         "name":"EVENT_NAME_MANAGE",_x000D_
      }_x000D_
     }_x000D_
    };_x000D_
 _x000D_
/* Sólo debemos cambiar los elementos 0 y 1 si existen */_x000D_
$scope.toggle = function(isCheck, index) {_x000D_
 if (json.hasOwnProperty(index)) {_x000D_
  /* No es necesario usar index.toString() */_x000D_
   for (let j in json[index]) {_x000D_
    if (json[index][j].hasOwnProperty('check')) {_x000D_
      json[index][j].check = isCheck;_x000D_
    }_x000D_
   }_x000D_
 }_x000D_
}_x000D_
_x000D_
console.log("Mostrando resultado final:");_x000D_
console.log(json);

_x000D_

_x000D_

_x000D_

Si recibes, como dices en tu pregunta, 50 o más registros es un desperdicio de tiempo recorrer todos y cada uno de los elementos si sólo buscas dos en concreto, el índice 0 y el 1.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *