2

テキストと数値の両方を含むクエリ文字列を解析する必要があります。たとえば、次のクエリ文字列:

?userID=12&team=Sales&quarter=Q1&count=2310

次のJavaScriptオブジェクトに変換する必要があります。

{
userID:12, // not "12"
team:"Sales",
quarter:"Q1",
count:2310 // not "2310"
}

現在、私は2つのステップでそれを行っています。

  1. クエリ文字列を解析します
  2. すべてのパラメーターを調べて、どのパラメーターが数値であるかを特定します(正規表現またはisNumber関数のいずれかを使用)!isNaN(parseFloat(n)) && isFinite(n)

特に私のパラメータのほとんどが数値ではないため、これはかなり非効率的なようです。もっと良い方法はありますか?

4

3 に答える 3

1

2つの提案:

  1. どのパラメータが数値を保持するかがわかっている場合は、それらのパラメータのみを変換してください
  2. 私の知る限り、文字列を数値に変換する最も速い方法は、次のように単項演算子を使用することです。

    +(strVar)

また、1を掛けることは速いAFAIKであると思われます

于 2013-02-22T20:48:23.630 に答える
1

指定値をどこで使用するか知っていますか?

「3239」のような数値形式の文字列に1を掛けると、その文字列が数値に変換されるためです。

var example = 5 + (o.count*1) //o.count will be a number...
于 2013-02-22T20:57:44.320 に答える
0

クエリ文字列を解析した後、整数値のこれらの文字列表現を次のように実際の整数に変換できます。

var obj; // your object that the string is parsed into, with all values as strings.
for (var prop in obj) {
    if (String(parseInt(obj[prop])) === obj[prop]) {
        obj[prop] = parseInt(obj[prop]);
    }
}
于 2013-02-22T20:51:14.817 に答える