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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

Q&A

解決済

2回答

932閲覧

Node.js 計算結果を返す

hiro_ike

総合スコア48

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

0グッド

0クリップ

投稿2021/06/10 13:09

JavaScript初心者でNode.jsを勉強中です。

http://localhost:3000/tip/200/20
と入力されたら、百分率表記にして"10"と画面に表示させるようにしたいです。
res.sendが書き方が間違っていると思うのですが、アドバイス頂けないでしょうか。

JavaScript

1// expressを読み込めるようにしている。 2const express = require('express'); 3// express()をappに格納する。 4const app = express(); 5 6app.get('/tip/:total/:tipPercentage', (req, res) => { 7 const Percentage = (num, per) => { 8 return (num/100)*per; 9 } 10 let total = parseInt(req.params.total) 11 let tipPercentage = parseInt(req.params.tipPercentage); 12 res.send(`${Percentage}(${total}, ${tipPercentage})`) 13}) 14 15app.listen(3000, () => console.log('hello i am listening on port 3000')) 16

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

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

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

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

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

guest

回答2

0

2つの引数a,bに対して、bがaの何パーセントかを返したいという認識で間違いないでしょうか??
それでしたら、return (num/100)*per;return (per / num) * 100;となるかと思います。
(計算式が間違っていますね)

投稿2021/06/10 14:16

編集2021/06/10 14:17
hallen0225

総合スコア587

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

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

hiro_ike

2021/06/10 14:57

ご確認ありがとうございます。似たようなことをやりたいサンプルコードを見つけ、よく考えないで使用しておりました。助かりました。
guest

0

ベストアンサー

テンプレートリテラル{}の使い方で
ちょっとした勘違いがあるようですね。

テンプレートリテラルの{}
「組み込み式」であって変数ではありません。

「組み込み式」というのは実践的な話をすると「値」を指します。
変数名だけポンと書いても値、これは勿論正しい。
Percentage(a, b)のように書いたら関数実行した返り値という値。
最終的に1個の値になれば良いので、中で三項演算子を使っても構いません。

js

1 const Percentage = (num, per) => { 2 return (num/100)*per; 3 }

Percentageは関数宣言です。
テンプレートリテラルの中で${Percentage}と指定しても計算結果は出てきません。
文字列に無理やり評価しようとした結果、
(num, per) => { return (num/100)*per; }みたいな文字列になることでしょう。

質問文のコードは「関数実行で計算した結果」が欲しいはずです。。
下記のようにしましょう。

js

1res.send(`${Percentage(total, tipPercentage)}`);

まぁ、そもそもテンプレートリテラル要る?問題もありますね。
Express.js前提ならばこんな感じ

js

1// 数値を文字列にしたいなら.toString()メソッドを利用するのもあり 2res.send(Percentage(total, tipPercentage).toString()); 3 4// res.sendは勝手にtoStringしてくれそうなので 5// そのまま数値突っ込んでも動きそう 6res.send(Percentage(total, tipPercentage)); 7 8// resはres.jsonにすると良い感じにJSON形式で返してくれる 9res.json(Percentage(total, tipPercentage));

ん?Percentageの関数、ちょっと変だな?
100分率にだから100をどっかで掛け算するのが正解でしょうね。

投稿2021/06/10 14:15

編集2021/06/10 14:43
miyabi-sun

総合スコア21203

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

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

hiro_ike

2021/06/10 14:56

ご丁寧にありがとうございます。どこが理解していないか分かりました、再度勉強しなおします。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問