Veuillez me pardonner pour ma ligne d'objet. Impossible de comprendre quoi mettre.

J'ai des données générées dynamiquement. Les données sont similaires à cela.

var TypeA ={ "length" : "100" , "width" :"80" , "color" : "#ffffff" }    
var TypeB ={ "length" : "150" , "width" :"120" , "color" : "#4286f4" }
var TypeC ={ "length" : "150" , "width" :"120" , "color" : "#4202f4" }

Les quelques JSON ci-dessus définissent les propriétés du type A, B, C respectivement. (En réalité, il existe de nombreux types.)

Maintenant, j'ai les données réelles comme ci-dessous:

 var data =[{id : "1" , label : "A1" , type : "TypeA" },
            {id : "2" , label : "A2" , type : "TypeA" },
            {id : "3" , label : "B1" , type : "TypeB" },
            {id : "4" , label : "A3" , type : "TypeA" },
            {id : "5" , label : "C1" , type : "TypeC" },
            {id : "6" , label : "B2" , type : "TypeB" }
            ]

Maintenant, j'exécute la boucle à travers le data. Dans cette boucle, j'ai besoin d'accéder aux propriétés de type basées sur le type défini dans les données JSON.

Je fais quelque chose comme ça, mais cela ne semble pas fonctionner.

$.each(JSON.parse(data), function(index,jsonObject){
      console.log("ColorCode : "+ jsonObject.type.color);
 });

Quelqu'un peut-il m'aider comment puis-je accéder aux propriétés de type ici. Merci.

0
CrazyCoder 13 avril 2018 à 16:05

3 réponses

Meilleure réponse

Dans l'exemple que vous avez donné, vous avez défini une variable par définition de type. Cela les rend plus difficiles d'accès. Au lieu de cela, vous devriez avoir ceci:

var types = {
  "TypeA": { "length" : "100" , "width" :"80" , "color" : "#ffffff" },
  "TypeB": { "length" : "150" , "width" :"120" , "color" : "#4286f4" },
  "TypeC": { "length" : "150" , "width" :"120" , "color" : "#4202f4" }
};

Ou ca:

var TypeA ={ "length" : "100" , "width" :"80" , "color" : "#ffffff" };  
var TypeB ={ "length" : "150" , "width" :"120" , "color" : "#4286f4" };
var TypeC ={ "length" : "150" , "width" :"120" , "color" : "#4202f4" };
var types = {
  "TypeA": TypeA,
  "TypeB": TypeB,
  "TypeC": TypeC
};

Ensuite, c'est facile à faire:

JSON.parse(data).forEach(function(el) {
  console.log("ColorCode : " + types[el.type].color);
});

Démo

var types = {
  "TypeA": { "length": "100", "width": "80", "color": "#ffffff" },
  "TypeB": { "length": "150", "width": "120", "color": "#4286f4" },
  "TypeC": { "length": "150", "width": "120", "color": "#4202f4" }
};

var data =[
  {id : "1" , label : "A1" , type : "TypeA" },
  {id : "2" , label : "A2" , type : "TypeA" },
  {id : "3" , label : "B1" , type : "TypeB" },
  {id : "4" , label : "A3" , type : "TypeA" },
  {id : "5" , label : "C1" , type : "TypeC" },
  {id : "6" , label : "B2" , type : "TypeB" }
];

data.forEach(function (el) {
  console.log("ColorCode : " + types[el.type].color);
});
3
blex 13 avril 2018 à 13:22

Appelez les variables avec window.

var TypeA ={ "length" : "100" , "width" :"80" , "color" : "#ffffff" }    
var TypeB ={ "length" : "150" , "width" :"120" , "color" : "#4286f4" }
var TypeC ={ "length" : "150" , "width" :"120" , "color" : "#4202f4" }

var dataO = [{id : "1" , label : "A1" , type : "TypeA" },
            {id : "2" , label : "A2" , type : "TypeA" },
            {id : "3" , label : "B1" , type : "TypeB" },
            {id : "4" , label : "A3" , type : "TypeA" },
            {id : "5" , label : "C1" , type : "TypeC" },
            {id : "6" , label : "B2" , type : "TypeB" }];

/*The data is already parsed.*/

dataO.forEach(function(key, index){
  console.log(window[key.type].color);
});

/*dataO.forEach(key => console.log(window[key.type].color));*/
  
-2
alessandrio 13 avril 2018 à 13:14

Je recommanderais, vous de définir le Type dans un objet

var obj = {
  "TypeA": {.... },
  "TypeB": {.... },,
  "TypeC": {.... },
};

Alors vous pouvez facilement utiliser Notation entre crochets pour accéder à la clé de chaîne basée sur la propriété.

 $.each(data, function(index,jsonObject){
      console.log("ColorCode : ", obj[jsonObject.type].color);
 });
var obj = {
  "TypeA": {
    "length": "100",
    "width": "80",
    "color": "#ffffff"
  },
  "TypeB": {
    "length": "150",
    "width": "120",
    "color": "#4286f4"
  },
  "TypeC": {
    "length": "150",
    "width": "120",
    "color": "#4202f4"
  }
};

var data = [{
    id: "1",
    label: "A1",
    type: "TypeA"
  },
  {
    id: "2",
    label: "A2",
    type: "TypeA"
  },
  {
    id: "3",
    label: "B1",
    type: "TypeB"
  },
  {
    id: "4",
    label: "A3",
    type: "TypeA"
  },
  {
    id: "5",
    label: "C1",
    type: "TypeC"
  },
  {
    id: "6",
    label: "B2",
    type: "TypeB"
  }
]

 $.each(data, function(index,jsonObject){
      console.log("ColorCode : ", obj[jsonObject.type].color);
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
1
Satpal 13 avril 2018 à 13:12