jquery函数具有访问对象的字符串参数

时间:2013-05-23 17:23:28

标签: jquery

我正在尝试创建鞋转换功能......这就是想法:

  • 我有两个阵列,一个用于美国鞋码,另一个用于欧盟鞋码
  • 我有一个转换功能,它确实包含美国鞋码和转换为的国家/地区。
  • 该功能会查找传入的鞋码以查找美国阵列中的索引。
  • 接下来,该函数获取找到的索引,以访问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数组,我只是看着字符串。

如何使用字符串参数匹配具有相同名称的对象。

这是非常基本的我确定但是我在过去的几个小时里无法在网上找到答案。想象一下,我在搜索中使用了不正确的术语。谢谢!

2 个答案:

答案 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]在函数中访问它。