我正在尝试创建鞋转换功能......这就是想法:
接下来,该函数获取找到的索引,以访问EU数组中相同索引位置的项目。
//Shoe size arrays
var US = [3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5, 12, 13, 14, 15, 16];
var EU = [35, 35.5, 36, 37, 37.5, 38, 38.5, 39, 40, 41, 41.5, 42, 42.5, 43, 44, 44.5, 45, 46, 47, 48, 49, 50];
var currentsize = 6.5;
var countrycode = 'EU';
convertShoeSize(currentsize, countrycode);
function convertShoeSize(size, converto){
var sizelocation = $.inArray(size, US);
console.log(size + ' is at index ' + sizelocation);
console.log('going to ' + converto);
console.log(typeof(converto));
console.log(typeof(EU));
//this is where I want the parameter to access the array
//with the same name, so the EU array created at top
var converted = converto[sizelocation];
console.log(converted);
}
参数countrycode以字符串形式出现,我想使用该字符串来匹配具有相同名称的数组对象(上面已注释)。获取 undefined 的结果。
如果我使用:
var converted = converto[1]
我得到U,同样如果我要索引0我得到E.所以我知道我没有访问EU数组,我只是看着字符串。
如何使用字符串参数匹配具有相同名称的对象。
这是非常基本的我确定但是我在过去的几个小时里无法在网上找到答案。想象一下,我在搜索中使用了不正确的术语。谢谢!
答案 0 :(得分:3)
而不是数组使用它作为对象。你的问题将得到解决
将其更改为
var shoe_sizes = {
"US" : [3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10,
10.5, 11, 11.5, 12, 13, 14, 15, 16],
"EU" : [35, 35.5, 36, 37, 37.5, 38, 38.5, 39, 40, 41, 41.5, 42,
42.5, 43, 44, 44.5, 45, 46, 47, 48, 49, 50]
};
var currentsize = 6.5;
var countrycode = 'US',
convertTo = 'EU';
convertShoeSize(currentsize, convertTo);
function convertShoeSize(size, converto) {
var sizelocation;
// Assign the value and check if the index is not -1
if ((sizelocation = $.inArray(size, shoe_sizes[countrycode]))
&& sizelocation !== -1) {
console.log(size + ' is at index ' + sizelocation);
console.log('going to ' + converto);
console.log(typeof (converto)); console.log(typeof (EU));
//this is where I want the parameter to access the array
//with the same name, so the EU array created at top
var converted = shoe_sizes[converto][sizelocation];
console.log(converted);
}
}
<强> Check Fiddle 强>
答案 1 :(得分:0)
将数组分配给窗口['EU'],并使用window [convertto]在函数中访问它。