0


以前、関数に格納された配列値へのアクセス、クロージャーを使用した配列値の受け渡しに関する質問を投稿したところ、このコードでうまくいくと言われました。

<script>
    function ArrValues(arr) {
     var arr1 = arr=='one' || arr=='all' ? ['grapes','peaches','plums'] : [],
     arr2 = arr=='two' || arr=='all' ? ['car','motorcycle','tree'] : [],
     arr3 = arr=='three' || arr=='all' ? ['200','1000','350'] : [];
     gotIt(arr1,arr2,arr3);
  }

 function gotIt(arr1,arr2,arr3){
    alert(arr1);
    alert(arr2);
    alert(arr3);
  }
</script>

以下に示すようにコードを更新しました。これは、別の関数に引数として送信せずに、必要な配列のみを返す良い方法でしょうか?

  <script>
  function ArrValues(arr) {
  var arr1 = arr=='one' || arr=='all' ? ['grapes','peaches','plums'] : [];
  if(arr1.length>0){
    return arr1;
  };

  arr2 = arr=='two' || arr=='all' ? ['car','motorcycle','tree'] : [];
  if(arr2.length>0){
    return arr2;
  };

 arr3 = arr=='three' || arr=='all' ? ['200','1000','350'] : [];
  if(arr3.length>0){
    return arr3;
   }
  }
 </script>

 <div id="one" onclick="ArrValues(this.id)">one</div>
 <div id="two" onclick="ArrValues(this.id)">two</div>
 <div id="three"onclick="ArrValues(this.id)">three</div>
 <div id="all"onclick="ArrValues(this.id)">all</div>
4

2 に答える 2

2

どうですか

function ArrValues(arr) {
    var values = {
         'one': ['grapes','peaches','plums'],
         'two': ['car','motorcycle','tree'],
         'three': ['200','1000','350']
        };

    return values[arr];
}

この場合に何を返すかを説明していないため、ケースは処理allされません。 )


allすべての値を単一の配列にマージする場合は、

function ArrValues(arr) {
    var match,
        values = {
            'one': ['grapes','peaches','plums'],
            'two': ['car','motorcycle','tree'],
            'three': ['200','1000','350']
        };

     if (arr!=='all'){
         match = values[arr];
     } else {
         match = values['one'].concat( values['two'] ).concat( values['three'] );
     }

     return match;
}
于 2013-03-06T03:09:01.347 に答える