1

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

  • 我有两个数组,一个用于美国鞋码,另一个用于欧盟鞋码
  • 我有一个转换功能,可以将美国鞋码和转换到的国家/地区纳入其中。
  • 该函数查找传入的鞋码以在 US 数组中找到它的索引。
  • 接下来,该函数使用找到的索引来访问 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 以字符串形式出现,我想使用该字符串来匹配具有相同名称的数组对象(上面已注释)。获取未定义的结果。

如果我使用:

var converted = converto[1]

我得到 U,同样,如果我要求索引 0,我得到 E。所以我知道我没有访问 EU 数组,我只是在查看字符串。

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

我敢肯定,这真的很基本,但在过去的几个小时里,我无法在网上任何地方找到答案。想象一下,我在搜索中使用了不正确的术语。谢谢!

4

2 回答 2

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);
    }
}

检查小提琴

于 2013-05-23T17:26:37.020 回答
0

将数组分配给 window['EU'],并在您的函数中使用 window[convertto] 访问它。

于 2013-05-23T17:28:24.863 回答