首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变量和对象从对象中获取键的值

使用变量和对象从对象中获取键的值
EN

Stack Overflow用户
提问于 2018-09-05 23:05:21
回答 2查看 35关注 0票数 0

我试图使用变量和另一个对象从我的对象中获得一个值。第一个变量工作得很好,但是被困在第二个变量上,并且尝试了很多事情,但都没有成功。

代码语言:javascript
复制
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);

第一行返回;

代码语言:javascript
复制
Object {nl: "April", en: "April", de: ""}

第二行返回;

代码语言:javascript
复制
undefined

第三行返回

代码语言:javascript
复制
nl

我要得到“四月”

后来添加了

在下面的示例中,ajax调用从原来的json检索data,但ajax在对象内部传输它。

只有在这个例子中,我手动地将'var数据‘与完整的ajax响应放在一起,在我的示例中,它没有被传输到对象中。

我的目标是循环每一张图像,并以正确的语言获取图像和标签,什么是图像的一部分。

代码语言:javascript
复制
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++;
        }
      }
    }
  }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-05 23:08:53

nldata.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开始

代码语言:javascript
复制
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)

票数 2
EN

Stack Overflow用户

发布于 2018-09-05 23:26:42

我想你把]放错位置了。您能试一下以下代码吗?

代码语言:javascript
复制
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: ""},那么第二行应该使用data.data.mengsels_data['mengsels_label_'+counter_i][sessionStorage.language]访问nl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52194438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档