2016-04-10 9 views
0

配列があり、配列に格納されている計算を行いたいとします。例えば配列(js)に格納されている計算を呼び出す

:私はこれの多くのバリエーションを試してみましたし、私が管理している

function Debug(){ 
    Test[1]; 
} 

私のような何かを行うことによって、変数Countを増やしたい関数の内部

var Count = 0; 
var Test = [0,Count++,0,0]; 

  • 配列が宣言されたときに1を加算します。
  • Do nothing nothing
  • 各アレイセルに新しいfuctionを作成します。これは実際に何をしようとしているのかに時間がかかります。私は何かがより速く/より簡単になりたいです。
  • 私は配列を宣言するときにコードを実行しないでください。ただし、できる限り新しい関数を宣言することなく、特定の配列セルを呼び出すときに実行します。

    +0

    JS、何を彼はあなたにした? :( – Angels

    答えて

    0

    ようにそれを行うことができます構文の単純さのために。そして私はあなたにそれを与える方法を見ません。しかし、フィールドアクセスの機能を実行する方法があります。これは初期設定の複雑さを犠牲にし、あなたがやりたいことがありますES6脂肪矢印構文が混乱している場合、これは相当

    var Test = [0, "replace me", 0, 0]; 
    
    Object.defineProperties(Test, { 
        1: {get: (() => {let count = -1; return() => ++count})()} 
    }); 
    
    Test[0]; //=> 0 
    Test[1]; //=> 0 
    Test[2]; //=> 0 
    Test[3]; //=> 0 
    Test[0]; //=> 0 
    Test[1]; //=> 1 
    Test[2]; //=> 0 
    Test[3]; //=> 0 
    Test[1]; //=> 2 
    Test[1]; //=> 3 
    Test[1]; //=> 4 
    

    です:

    Object.defineProperties(Test, { 
        1: {get: (function() { 
        let count = -1; 
        return function() { 
         return ++count; 
        }; 
        })()} 
    }); 
    
    +0

    ビンゴ!私は、私のプロジェクトの上で正常に動作し、反対の兆候と私の配列のコピー貼り付けによって時間のかかる初期設定を避け、すべてが魅力のように動作します。 – Ethismos

    0

    あなたはこれを少し違って行う必要があります。

    var Count = 0; 
    var Test=[0, function() { Count++ }, 0, 0]; 
    

    そして関数を呼び出す:あなたは、独自の機能でCount増分をラップする必要が

    function Debug() { 
        Test[1](); 
    } 
    
    0

    あなたが探しているように見えたこの

    var count = 0, 
         arr = [0,"count++",0,0], 
        runItem = Function("return " + arr[1]); 
    runItem(); // <- 0 
    runItem(); // <- 1 
    
    関連する問題