Получить значение ключа из объекта, используя переменную и объект - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь получить значение из моего объекта, используя переменную и другой объект. Первая переменная сработала очень хорошо, но она застряла на второй и много чего перепробовала безуспешно.

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);

Возвращается первая строка;

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

Вторая строка возвращает;

undefined

Третья строка возвращает

nl

Мне нужно получить 'Апрель'

Добавлено позже

В приведенном ниже примере data извлекается с помощью вызова ajax, из оригинала это json, но ajax передает его внутри объекта.

Только в этом примере я поместил 'var data' вручную с полным ответом ajax, в моем примере он не передается в объект.

Моя цель - пройтись по каждому изображению и взять изображение и метку на нужном языке, которая является частью изображения.

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++;
        }
      }
    }
  }
});

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Я думаю, что вы потеряли ]. Можете ли вы попробовать следующий код:

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);

Если data.data.mengsels_data['mengsels_label_'+counter_i] равно Object {nl: "April", en: "April", de: ""}, то ваша вторая строка должна получить доступ к nl с помощью data.data.mengsels_data['mengsels_label_'+counter_i][sessionStorage.language].

0 голосов
/ 06 сентября 2018

nl является собственностью data.data.mengsels_data['mengsels_label_'+counter_i] и sessionStorage.language === nl. Таким образом, вы должны быть в состоянии использовать:

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

Редактировать на основе нового кода:

Код, который вы имеете, запускает счетчик с 0, но данные начинаются с mengsels_label_1, что означает, что на первой итерации, которую вы ищете mengsels_label_0, которая не существует. Попробуйте начать с 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...