我正在编写代码来在Javascript中设置查找结构
var g_Codes = {
"Type1": {
"U.S.": "US1",
"Asia": "AS1",
"Europe": "EU1"
},
"Type2": {
"U.S.": "X2",
"Asia": "X2",
"Europe": "X2"
},
"Type3": {
"U.S.": "X3",
"Asia": "X3",
"Europe": "X3"
},
"Type4": {
// Does not exist yet
}
};
所以你可以通过交叉引用类型&来循环这个并获取代码。区域。
但是,我想这样做,所以我可以这样做:
var US_REGION = "U.S.";
var AS_REGION = "Asia";
var EU_REGION = "Europe";
var g_Codes = {
"Type1": {
US_REGION: "US1",
AS_REGION: "AS1",
EU_REGION: "EU1"
},
"Type2": {
US_REGION: "X2",
AS_REGION: "X2",
EU_REGION: "X2"
},
"Type3": {
US_REGION: "X3",
AS_REGION: "X3",
EU_REGION: "X3"
},
"Type4": {
// Does not exist yet
}
};
并可以更轻松地更改标准区域名称。
如果我试试这个:
for(let focus in g_Codes) {
print(focus);
}
第一个给了我“美国”,“亚洲”等,而第二个给了“US_REGION”,“AS_REGION”
如何使用变量,但保持循环g_Codes的简单性?
答案 0 :(得分:4)
你不能用你想要的符号。
您可以先定义对象:
var g_Codes = {
Type1: {},
Type2: {},
Type3: {}
};
然后使用属性名称和方括号表示法的变量填充它:
g_Codes.Type1[US_REGION] = 'US1';
答案 1 :(得分:0)
为什么不采用这种结构:
var g_Codes = {
'Type1': ['US1', 'AS1', 'EU1'],
'Type2': ['X21', 'X22', 'X23'],
'Type3': ['X31', 'X32', 'X33']
};
现在您可以使用索引来访问字符串:
g_Codes.Type1[0] // returns 'US1'
g_Codes.Type2[1] // returns 'X22'
等
您必须记住的是哪个索引(整数)代表哪个区域。
您可以定义一个辅助对象:
var REGIONS = {
'US': 0,
'Asia': 1,
'Europe': 2
}
然后:
g_Codes.Type1[ REGIONS.Europe ] // returns 'EU1'
答案 2 :(得分:0)
您可以重新组织您的结构吗?
var US_REGION = "U.S.";
var AS_REGION = "Asia";
var EU_REGION = "Europe";
var g_Codes = {
"U.S." : {
"Type1" : "US1",
"Type2" : "X2",
"Type3" : "X3"
},
"Asia" : {
"Type1" : "US1",
"Type2" : "X2",
"Type3" : "X3"
},
"Europe" : {
"Type1" : "US1",
"Type2" : "X2",
"Type3" : "X3"
}
};
var single_region = g_Codes['U.S.'];
for(var key in single_region) {
console.log(key, single_region[key]);
}
// or a different loop
for (var region in g_Codes) {
for(var key in g_Codes[region]) {
console.log(key, g_Codes[region][key]);
}
}