-1

関数の結果を変数に格納するにはどうすればよいですか?

配列を含むオブジェクトをナビゲートする際に、1 つの値value1を探しています。それが見つかったら、そのプロパティの 1 つであるproperty1の値を取得したいと考えています。

以下で使用しているコードは例であり、正しくありません。

function loadSets(id){
   clworks.containers.find(function(i){
      return i.get('property1')===id;
   });
}

私の意図は、以下のオブジェクトをナビゲートすることです:

clworks.containers
    containers[0].property0.id
    containers[1].property1.id

関数で使用される id と等しいプロパティ値を持つ配列内の項目を見つけて、それを変数として格納する方法を決定しようとしています。

4

2 に答える 2

3

単に:

var myVar = loadSets(id);

編集

さて、あなたの質問を今理解している限り、あなたの状況は次のとおりです。

  1. ;arrayというオブジェクトが含まれています。containers
  2. これを繰り返して、 ;と呼ばれる関数で指定されたものと等しいプロパティのプロパティをarray探します。idproperty1loadSets(id)
  3. id見つかったら、要求されたオブジェクトを変数に格納します。

私は正しいですか?もしそうなら、これはあなたの問題を解決するはずです:

// This function iterates through your array and returns the object
// with the property id of property1 matching the argument id
function loadSets( id ) {

    for(i=0; i < containers.length; i++) {

        if( containers[i].property1.id === id )
            return containers[i];

    }

    return false;

}

この後、あなたはあなたの質問に対する最初の答えで私が言ったことをする必要があり、あなたが望むようにそれを引き起こします。私はあなたのために簡単なJSBinを置きました。inputフィールドに10または20を入力してから、検索ボタンを押してみてください。探しているオブジェクトが返されます。他の番号を入力してみてください。 「見つかりません」が返されます。

于 2013-02-27T17:01:48.390 に答える
0

現在、関数loadSetsは実際には何も返さないため、結果を保存することはできません。

試す:

function loadSets(id){
   return Base.containers.find(function(i){
      return i.get('entityid')===id;
   });
}

そして、結果を変数に入れるには:

var result = loadSets(id);
于 2013-02-27T17:06:31.723 に答える