1

私は靴の変換関数を作成しようとしています...これがアイデアです:

  • 米国の靴サイズ用と EU の靴サイズ用の 2 つの配列があります。
  • 米国の靴のサイズと変換先の国を取り込む変換関数があります。
  • この関数は、渡された靴のサイズを検索して、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は文字列として入ってきます。その文字列を使用して、同じ名前の配列オブジェクトと一致させたいと思います(上記のコメント)。undefinedの結果を取得します。

私が使用する場合:

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 に答える