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

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

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

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

Q&A

解決済

1回答

861閲覧

ジャバスクリプトで可変長の引数を処理するクラスを作りたいです。

ottopo

総合スコア13

JavaScript

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

0グッド

0クリップ

投稿2018/12/22 05:29

編集2018/12/22 05:49

入力した数字を足すプログラムを書いたのですが、
0[object Object]と表示されます。

let cal=new Cal(su);
でクラスの引数にsuの配列が送られていないようなのですが、
どう書けばいいのか分からなくて質問させていただきました。

let fun6 = function () { let i=0; let su={}; do{ su[i]=prompt("数字") }while(su[i++]!=""); **let cal=new Cal(su);** cal.tasu(); } class Cal{ constructor(...arg){ this.arg=arg; } tasu(){ let ans = 0; for(i=0;i<this.arg.length;i++){ ans+=this.arg[i]; } alert(ans); } }

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

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

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

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

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

y_waiwai

2018/12/22 05:32

で、しつもんはなんでしょうか
ottopo

2018/12/22 05:40

入力した数字を足すプログラムを書いたのですが、 結果が正しく表示されません。 let cal=new Cal(su); でクラスに入力したsuの配列が送られていないようなのですが、 どう書けばいいのか分からなくて質問させていただきました。
退会済みユーザー

退会済みユーザー

2018/12/22 05:59

引数を可変数にしたいんですか? 配列を渡したいんですか? そもそも配列なんて渡されてませんが。
ottopo

2018/12/22 06:15

su[i]=prompt("数字") で入力された複数の数字をsuの配列で引数として渡し、 足した合計を表示したいです。
guest

回答1

0

ベストアンサー

とりあえず動くようにだけしました。

js

1let fun6 = function () { 2 let i=0; 3 let su=[]; // 配列でいいよね。 4 do{ 5 su[i]=prompt("数字") 6 }while(su[i++]!=""); // 後述するが、かならずsuの最後は空文字列になる 7 console.log('su',su); 8 let cal=new Cal(su); // ここで配列を渡しているので、⇒ 9 cal.tasu(); 10} 11 12class Cal{ 13 constructor(arg){// ⇒引数は普通に受け取る 14 this.arg=arg; 15 } 16 tasu(){ 17 let ans = 0; 18 for(let i=0;i<this.arg.length - 1;i++){ // do while の結果、最後の空文字列も入っているので。(もっとまともな処理の仕方はあるが) 19 ans+=parseInt(this.arg[i]); // promptは文字列として返ってくるので数値化 20 } 21 console.log(ans); // デベロッパーツールで確認するようにしましょう http://eng-entrance.com/javascript-display-error 22 } 23} 24fun6(); 25```**動くサンプル:**[https://jsfiddle.net/xrgmfst3/](https://jsfiddle.net/xrgmfst3/)

投稿2018/12/22 06:05

kei344

総合スコア69407

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

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

ottopo

2018/12/22 06:49

ありがとうございます。無事動かすことができました。 可変長の引数を利用したプログラムを作りたかったのですが、必要なかったみたいですね、、、 配列の[]は盲点でした。 for(let i=0;i<this.arg.length - 1;i++){ // do while の結果、最後の空文字列も入っているので。(もっとまともな処理の仕方はあるが) が気になるのですがスマートな記述だとどういう書き方になるのですか?
kei344

2018/12/22 07:13

> スマートな記述だと 先に数値以外をフィルタするとか、そういう感じです。(そもそも現在のコードは「A」とか文字列が入るとNaNを返すので)
ottopo

2018/12/22 07:49

なるほど入力値のチェックは必要ですね。 親切にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問