我正在尝试使用变量和另一个对象从我的对象中获取一个值。 第一个变量工作得很好,但是卡在第二个变量上,并尝试了很多事情而没有成功。
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将其传输到对象内部。
仅在此示例中,我以完整的ajax响应手动放置了“ var data”,在我的示例中,它没有转移到对象中。
我的目标是循环遍历每个图像,并以正确的语言拍摄图像和标签,这是图像的一部分。
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++;
}
}
}
}
});
答案 0 :(得分:2)
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)
答案 1 :(得分:0)
我认为您放错了]
。您可以尝试以下代码吗?
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]
。