1

Web アプリ用に最適化したい以下の JavaScript 関数があります。

function DisplayToolTip(str) {
  switch (str) {
    case "a": 
        this.tooltip(xvalue,yvalue,text);
        break;
    case "b": 
        this.tooltip(xvalue,yvalue,text);
        break;
    case "c": 
        this.tooltip(xvalue,yvalue,text);
        break;
    default: break;
  }
}

switch ステートメントは変更される可能性があります。つまり、json は case "d" を追加する必要があるかもしれませんが、関数は存在するため、上記を更新する方法がわかりません。

通常、c# では辞書を使用するため、キーは「a」、値はプロパティ xvalue、yvalue、text を持つオブジェクト、または値は文字列「this.tooltip(xvalue,yvalue,text);」になります。この方法で辞書を更新でき、「DisplayToolTip」の実行速度は、要素の数に関係なく比較的同じになります。

javascriptで文字列値を使用して、インデックス付けされたオブジェクトの配列を作成する方法、またはすばやく見つけられるオブジェクトの配列を作成するにはどうすればよいですか?

4

4 に答える 4

2

JavaScript のオブジェクトは辞書のようなものです。

var dictionary = {
    a : ["xvalue","yvalue","text1"],
    b : ["xvalue","yvalue","text2"]
}

console.log(dictionary["b"][2]); // will give you text2.

デモ

編集:配列を含むように回答を更新しました(それが質問であるため)。

于 2013-10-26T09:15:55.783 に答える
0

switchフォールスルーを使用して、ステートメント自体を使用できます。

switch (str) {
    case "a": case "b": case "c": 
        this.tooltip(xvalue,yvalue,text);
        break;
    default: break;
}

(しかし、カンタス航空がコメントしたように、defaultここではケースは必要ありません。)

または、ブラウザーがサポートしている場合はindexOf、配列のメソッドを使用できます。

if (["a", "b", "c"].indexOf(str)) ...
于 2013-10-26T09:14:18.747 に答える
0

私はこのようなことをします:

var tooltipSettings={
    a: {xvalue: 1, yvalue: 1, text: 'string a'},
    b: {xvalue: 2, yvalue: 2, text: 'string b'},
    c: {xvalue: 3, yvalue: 3, text: 'string c'}
};

function DisplayToolTip(str) {
    if(tooltipSettings[str])
    {
        var settings=tooltipSettings[str];
        this.tooltip(settings.xvalue, settings.yvalue, settings.text);
    }
}
于 2013-10-26T09:19:45.757 に答える
0

辞書を使用できます。魔女は基本的にプレーンなオブジェクトです。Javascript を使用すると、次のように配列プロパティにアクセスするように、文字列でオブジェクト プロパティにアクセスできます。

var obj = {
    test: 'text',
    b: 4
}
console.log(obj['test'], obj.test);
console.log(obj['b'], obj.b);

したがって、コードは次のようになります。

var pairs = {
    'a': {
        xvalue: 1,
        yvalue: 1,
        text: '1111'
    },
    'b': {
        xvalue: 2,
        yvalue: 2,
        text: '2222'
    }
};
function DisplayToolTip(str) {

    var prop = pairs[str];

    if (typeof prop !== 'undefined')
        return this.tooltip(prop.xvalue, prop.yvalue, prop.text);

    throw 'undefined prop ' + str;
}
于 2013-10-26T09:17:42.730 に答える