質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

4回答

707閲覧

Javascript 引数が違うだけでもう少し簡単に書けないか?

SHIVA

総合スコア43

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/06/13 03:32

javascript

1 2average(1,2,3); 3average(1); 4average(3,1,4,1,5,9,2,6,5); 5average(2,7,1,8,2,8,1,8);

この例は、すごく簡易的です。

引数が違う関数を何度も呼び出しているのを見ると、あまり気分が良いものではない(見た目的にも)

この場合、もう少し、きれいに書く方法などありましたら教えてほしいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2019/06/13 03:35

動かしたい環境(ブラウザとか)によるところが有るので、そこら辺を書いたほうがいいですよ
miyabi_takatsuk

2019/06/13 03:43

averageメソッドで何をやっているかにもより、方法が変わってきます。 averageメソッドの内容も記載ください。
hentaiman

2019/06/13 03:51

「こんな場合にこんな感じのコードで書きたい!」みたいな理想とする書き方を例として載せておくと良い回答が付くと思いますよ
guest

回答4

0

ベストアンサー

averageの仕様次第だと思いますが・・・

javascript

1const average=(...args)=>args.reduce((x,y)=>x+y)/args.length; 2console.log(average(1,2,3)); 3console.log(average(1)); 4console.log(average(3,1,4,1,5,9,2,6,5)); 5console.log(average(2,7,1,8,2,8,1,8));

これを共通部分を調整したいというなら

javascript

1const average=(...args)=>args.reduce((x,y)=>x+y)/args.length; 2[ 3 [1,2,3], 4 [1], 5 [3,1,4,1,5,9,2,6,5], 6 [2,7,1,8,2,8,1,8], 7 ].forEach(x=>{ 8 console.log(average(...x)); 9 });

投稿2019/06/13 03:39

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

配列で渡せば?

まあ、中でなにやってるかにもよるけど。

投稿2019/06/13 03:34

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2019/06/13 03:54

ちなみに、設計的にそうするしかないんだったらそうするべきだと思うし パラメータを正規化? できるんだったら中間的な処理を挟んでもいいと思うし そもそも設計的に見直すべきところがあるかも という疑問が(自分だったら)わいてくるかなあ
guest

0

たとえば、副作用を期待している関数なら、jQueryでおなじみのメソッドチェーンというやり方があります。

js

1chainLog = arg=>{ 2 console.log(arg); 3 return chainLog; 4} 5 6chainLog(1)(2); 7 8/* 91 102 11*/

ただ当然ながら、返り値をひとつしか受け取れないというデメリットがあります。

投稿2019/06/13 03:37

Lhankor_Mhy

総合スコア35865

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2019/06/13 03:40 編集

勢いで書いたけど、これメソッドチェーンじゃないな…… まあ、意味は通じると思う。
guest

0

中でどういう処理をしているかによりますが、
提示の関数は「指定された引数の平均値を求める」ようなものと捉えると、
引数を配列で渡して中ではループさせれば良いかと思います。

投稿2019/06/13 03:35

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問