J Quest
J Quest

Reputation: 603

Get value of key from object using variable and object

I'm trying to get a value from my object using variable and another object. The first variable worked very well, but is get stuck at the second one and tried a lot of things without success.

console.log(data.data.mengsels_data['mengsels_label_'+counter_i]);
console.log(data.data.mengsels_data['mengsels_label_'+counter_i[sessionStorage.language]]);
console.log(sessionStorage.language);

The first line returns;

Object {nl: "April", en: "April", de: ""}

Second line returns;

undefined

Third line returns

nl

I need to get 'April'

Added later

In the example below data is retrieved with ajax call, from original it's json but ajax transfer it inside a object.

Only in this example i placed 'var data' manually with the full ajax response, in my example it's not transferred into object.

My goal is to loop trough each image and take the image and the label in the right language what is part of the image.

var data = {
  "code": "0",
  "success": [],
  "error": [],
  "data": {
    "0": "1",
    "mengsels_id": "1",
    "1": "Data Removed",
    "mengsels_name": "Data Removed",
    "2": "-",
    "mengsels_description": "-",
    "3": "\/media\/mengsels\/data-removed\/data-removed-1.jpg",
    "mengsels_cover": "\/media\/mengsels\/data-removed\/data-removed-1.jpg",
    "4": "",
    "mengsels_folder": "",
    "5": "",
    "mengsels_video": "",
    "6": "1",
    "mengsels_visible": "1",
    "7": "{\"mengsels_name\":\"Data Removed\",\"mengsels_description\":\"-\",\"mengsels_cover\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-1.jpg\",\"mengsels_img_1\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-1.jpg\",\"mengsels_img_2\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-2.jpg\",\"mengsels_img_3\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-3.jpg\",\"mengsels_img_4\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-4.jpg\",\"mengsels_img_5\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-5.jpg\",\"mengsels_img_6\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-6.jpg\",\"mengsels_img_7\":\"\",\"mengsels_img_8\":\"\",\"mengsels_img_9\":\"\",\"mengsels_img_10\":\"\",\"mengsels_label_1\":{\"nl\":\"Januari\",\"en\":\"Januari\",\"de\":\"\"},\"mengsels_label_2\":{\"nl\":\"Februari\",\"en\":\"Februari\",\"de\":\"\"},\"mengsels_label_3\":{\"nl\":\"Maart\",\"en\":\"March\",\"de\":\"\"},\"mengsels_label_4\":{\"nl\":\"April\",\"en\":\"April\",\"de\":\"\"},\"mengsels_label_5\":{\"nl\":\"Mei\",\"en\":\"May\",\"de\":\"\"},\"mengsels_label_6\":{\"nl\":\"Juni\",\"en\":\"June\",\"de\":\"\"},\"mengsels_label_7\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_8\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_9\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_10\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"}}",
    "mengsels_data": {
      "mengsels_name": "Data Removed",
      "mengsels_description": "-",
      "mengsels_cover": "\/media\/mengsels\/data-removed\/data-removed-1.jpg",
      "mengsels_img_1": "\/media\/mengsels\/data-removed\/data-removed-1.jpg",
      "mengsels_img_2": "\/media\/mengsels\/data-removed\/data-removed-2.jpg",
      "mengsels_img_3": "\/media\/mengsels\/data-removed\/data-removed-3.jpg",
      "mengsels_img_4": "\/media\/mengsels\/data-removed\/data-removed-4.jpg",
      "mengsels_img_5": "\/media\/mengsels\/data-removed\/data-removed-5.jpg",
      "mengsels_img_6": "\/media\/mengsels\/data-removed\/data-removed-6.jpg",
      "mengsels_img_7": "",
      "mengsels_img_8": "",
      "mengsels_img_9": "",
      "mengsels_img_10": "",
      "mengsels_label_1": {
        "nl": "Januari",
        "en": "Januari",
        "de": ""
      },
      "mengsels_label_2": {
        "nl": "Februari",
        "en": "Februari",
        "de": ""
      },
      "mengsels_label_3": {
        "nl": "Maart",
        "en": "March",
        "de": ""
      },
      "mengsels_label_4": {
        "nl": "April",
        "en": "April",
        "de": ""
      },
      "mengsels_label_5": {
        "nl": "Mei",
        "en": "May",
        "de": ""
      },
      "mengsels_label_6": {
        "nl": "Juni",
        "en": "June",
        "de": ""
      },
      "mengsels_label_7": {
        "nl": "",
        "en": "",
        "de": ""
      },
      "mengsels_label_8": {
        "nl": "",
        "en": "",
        "de": ""
      },
      "mengsels_label_9": {
        "nl": "",
        "en": "",
        "de": ""
      },
      "mengsels_label_10": {
        "nl": "",
        "en": "",
        "de": ""
      }
    }
  }
};
$.ajax({
  type: 'GET',
  url: "https://xxx.xxx.xx/xxx/x.x/mengsels/?action=view",
  data: {
    mengsels_id: mengsels_id
  },
  dataType: 'json',
  success: function(data) {
    $('#stage').html("");
    var counter_i = 0;
    for (var match in data.data.mengsels_data) {
      var reg = /(mengsels_img_[0-9]{1,})/g;
      if (reg.exec(match)) {
        if (data.data.mengsels_data[match]) {
          $('#stage').append('<div class="slideshow-div slideshow-2" data-counter="' + counter_i + '"> \
                                  <div class="slideshow-image" style="background-image: url(\'https://xxx.xxx.xx' + data.data.mengsels_data[match] + '\');" class="slideshow-image"> \
                                  </div><span></span> \
                                </div>');
          console.log(data.data.mengsels_data['mengsels_label_' + counter_i]);
          console.log(data.data.mengsels_data['mengsels_label_' + counter_i][sessionStorage.language]);
          console.log(counter_i);
          console.log(sessionStorage.language);
          console.log(data.data.mengsels_data['mengsels_label_' + counter_i]['nl']);
          console.log(data.data.mengsels_data['mengsels_label_' + counter_i].nl);
          counter_i++;
        }
      }
    }
  }
});

Upvotes: 0

Views: 45

Answers (2)

Mark
Mark

Reputation: 92440

nl is a property of data.data.mengsels_data['mengsels_label_'+counter_i] and sessionStorage.language === nl. So you should be able to use:

data.data.mengsels_data['mengsels_label_'+counter_i][sessionStorage.language]

Edit based on new code:

The code you have is starting the counter at 0 but the data starts at mengsels_label_1, which means on the first iteration you are looking for mengsels_label_0, which doesn't exist. Try starting at 1:

var data = {"code": "0","success": [],"error": [],"data": {"0": "1","mengsels_id": "1","1": "Data Removed","mengsels_name": "Data Removed","2": "-","mengsels_description": "-","3": "\/media\/mengsels\/data-removed\/data-removed-1.jpg","mengsels_cover": "\/media\/mengsels\/data-removed\/data-removed-1.jpg","4": "","mengsels_folder": "","5": "","mengsels_video": "","6": "1","mengsels_visible": "1","7": "{\"mengsels_name\":\"Data Removed\",\"mengsels_description\":\"-\",\"mengsels_cover\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-1.jpg\",\"mengsels_img_1\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-1.jpg\",\"mengsels_img_2\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-2.jpg\",\"mengsels_img_3\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-3.jpg\",\"mengsels_img_4\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-4.jpg\",\"mengsels_img_5\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-5.jpg\",\"mengsels_img_6\":\"\\\/media\\\/mengsels\\\/data-removed\\\/data-removed-6.jpg\",\"mengsels_img_7\":\"\",\"mengsels_img_8\":\"\",\"mengsels_img_9\":\"\",\"mengsels_img_10\":\"\",\"mengsels_label_1\":{\"nl\":\"Januari\",\"en\":\"Januari\",\"de\":\"\"},\"mengsels_label_2\":{\"nl\":\"Februari\",\"en\":\"Februari\",\"de\":\"\"},\"mengsels_label_3\":{\"nl\":\"Maart\",\"en\":\"March\",\"de\":\"\"},\"mengsels_label_4\":{\"nl\":\"April\",\"en\":\"April\",\"de\":\"\"},\"mengsels_label_5\":{\"nl\":\"Mei\",\"en\":\"May\",\"de\":\"\"},\"mengsels_label_6\":{\"nl\":\"Juni\",\"en\":\"June\",\"de\":\"\"},\"mengsels_label_7\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_8\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_9\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"},\"mengsels_label_10\":{\"nl\":\"\",\"en\":\"\",\"de\":\"\"}}","mengsels_data": {"mengsels_name": "Data Removed","mengsels_description": "-","mengsels_cover": "\/media\/mengsels\/data-removed\/data-removed-1.jpg","mengsels_img_1": "\/media\/mengsels\/data-removed\/data-removed-1.jpg","mengsels_img_2": "\/media\/mengsels\/data-removed\/data-removed-2.jpg","mengsels_img_3": "\/media\/mengsels\/data-removed\/data-removed-3.jpg","mengsels_img_4": "\/media\/mengsels\/data-removed\/data-removed-4.jpg","mengsels_img_5": "\/media\/mengsels\/data-removed\/data-removed-5.jpg","mengsels_img_6": "\/media\/mengsels\/data-removed\/data-removed-6.jpg","mengsels_img_7": "","mengsels_img_8": "","mengsels_img_9": "","mengsels_img_10": "","mengsels_label_1": {"nl": "Januari","en": "Januari","de": ""},"mengsels_label_2": {"nl": "Februari","en": "Februari","de": ""},"mengsels_label_3": {"nl": "Maart","en": "March","de": ""},"mengsels_label_4": {"nl": "April","en": "April","de": ""},"mengsels_label_5": {"nl": "Mei","en": "May","de": ""},"mengsels_label_6": {"nl": "Juni","en": "June","de": ""},"mengsels_label_7": {"nl": "","en": "","de": ""},"mengsels_label_8": {"nl": "","en": "","de": ""},"mengsels_label_9": {"nl": "","en": "","de": ""},"mengsels_label_10": {"nl": "","en": "","de": ""}}}};

function test(data) {
    const sessionStorage = {language: "nl"}
    var counter_i = 1; // <-- start at 1
    for (var match in data.data.mengsels_data) {
        var reg = /(mengsels_img_[0-9]{1,})/g;
        if (reg.exec(match)) {
          if (data.data.mengsels_data[match]) {      
            console.log(data.data.mengsels_data['mengsels_label_' + counter_i][sessionStorage.language]);
            counter_i++;
          }
        }
      }
    }
test(data)

Upvotes: 2

Pedro Sim&#227;o
Pedro Sim&#227;o

Reputation: 293

I think you misplaced a ]. Can you try the following code:

console.log(data.data.mengsels_data['mengsels_label_'+counter_i]);
console.log(data.data.mengsels_data['mengsels_label_'+counter_i][sessionStorage.language]);
console.log(sessionStorage.language);

If data.data.mengsels_data['mengsels_label_'+counter_i] is equal to Object {nl: "April", en: "April", de: ""}, then your second line should access the nl by using data.data.mengsels_data['mengsels_label_'+counter_i][sessionStorage.language].

Upvotes: 0

Related Questions