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