+ JavaScript の質問用スレッド vol.131 +

1Name_Not_Found2017/11/21(火) 21:58:33.01ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレは>>950が(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【条件】期待する回答の条件を書いてください。(ex: jQuery不可, フレームワーク不可)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

718Name_Not_Found2018/02/15(木) 13:13:52.45ID:???
初めてのJavaScript 第3版、オライリー、2017

ES2015 の本。
これを読めば、クラスとか、素人はあまりの難しさに愕然とするだろう

719Name_Not_Found2018/02/15(木) 13:18:59.62ID:???
素人が騒然とするのは当たり前だろ?


いや、お前がプロで、難しくて騒然としたっていうなら
それはそれで面白いことだがw

720Name_Not_Found2018/02/15(木) 15:15:21.53ID:???

721Name_Not_Found2018/02/15(木) 16:13:48.62ID:???
Maybeモナド的な機能がほすぃ

722Name_Not_Found2018/02/15(木) 17:07:52.68ID:???
JSのクラス化って何が利点になるの

723Name_Not_Found2018/02/15(木) 17:14:12.43ID:???
人間のメンタルモデルとコードを一致させられるから
理解しやすくなる。可読性の向上

ひねくれた方法で「実現できる」じゃだめなんだ
普通に書いて普通に読めなければいけない

724Name_Not_Found2018/02/15(木) 18:38:34.26ID:???
設計で方法論に従うことができる。
しかしテストでパターン数爆発で大抵死ぬ。

725Name_Not_Found2018/02/15(木) 19:06:50.48ID:???
自動テストさせちゃえ

726Name_Not_Found2018/02/15(木) 23:02:20.37ID:???
JSにテストなんて必要ない、トライアンドエラーがベスト
テストしたいんならよりし易い言語で書いてコンパイルすべき

727Name_Not_Found2018/02/15(木) 23:17:37.27ID:???
> テストしたいんならよりし易い言語で書いてコンパイルすべき

ではその、よりし易い言語がなにで
どういう理由で、よりし易いのか言えるんでしょうな?

728Name_Not_Found2018/02/15(木) 23:56:25.01ID:???
726ではないが、結局selenium動かしたり
casperでもぞもぞしたりするなあ

729Name_Not_Found2018/02/16(金) 09:35:25.15ID:???
svgの制御についての質問はここでしてもいいですか

730Name_Not_Found2018/02/16(金) 11:04:46.77ID:???
OKOK

SVG操作系javaScriptライブラリまとめ
https://jslob.repop.jp/2017/07/svgjavascript.html

731Name_Not_Found2018/02/16(金) 12:18:40.76ID:???
>>730
ナイスまとめ!

732Name_Not_Found2018/02/16(金) 13:18:36.03ID:???
昔foreignObjectを使って要素のミラーを作るというのを試した記憶があるのですが
今その情報を教えて頂けますか?
「あああ」をミラーしたら「あああ」が2つになって、大本を 「いいい」に変更するとコピー先も「いいい」になるという機能です

733Name_Not_Found2018/02/16(金) 13:20:06.33ID:???
参照渡しやんけ

734Name_Not_Found2018/02/16(金) 13:20:47.53ID:???
ぐぐれば?

735Name_Not_Found2018/02/16(金) 17:13:54.49ID:???
地図上に車のアイコンを置いて決まったルート上(svgのパス上)を動かすアニメーションを考えていて、進行方向に合わせてアイコンの向きを変えたいのですが、何を基準に計算をして向きを調整すれば良いかわからず困っています。
svg関連で角度の計算に使える関数やよい方法があれば教えていただけますか。

動きとしては↓こちらのサイトのようなものです。
https://itstudio.co/sample/svganime/anime7.html

736Name_Not_Found2018/02/16(金) 17:30:02.88ID:???
>>735
その犬の動きのほうがよく分からんw

737Name_Not_Found2018/02/16(金) 17:45:07.03ID:???
三角関数あんじゃん

738Name_Not_Found2018/02/16(金) 19:03:04.44ID:???
ここの奴ら役に立たんな
もうお前らには一切聞かんわ

739Name_Not_Found2018/02/16(金) 19:39:44.83ID:7Rrckydw
>>735
SVGの線上となるとアレだけど
動かすルートが決まっているなら接線の傾き求めればいいじゃない

740Name_Not_Found2018/02/16(金) 19:58:08.01ID:???
そいでそいで?

741Name_Not_Found2018/02/16(金) 20:21:32.71ID:???
>>739
接線か、なるほど気づきませんでした
接線の求め方から勉強してみます。。

742Name_Not_Found2018/02/16(金) 23:25:19.42ID:???
決まったルートがあるならatanだけで済む気がするんだが

743Name_Not_Found2018/02/17(土) 00:43:38.95ID:???
>>736
すみません。アニメーション自体はサイトのようなもので、これに角度の変化を付け加えたいという意味でした。
そしてよく見たらサイトのも微妙にrotateで傾けてますね。。折り返しの際に逆を向いてくれないので考えているものとは違いますが。

744Name_Not_Found2018/02/17(土) 01:07:44.05ID:Y6pp8OiO
>>743
反転はtransformのscaleを使うのが容易いかも

745Name_Not_Found2018/02/17(土) 16:14:43.08ID:???
var test = {
a: 1,
b: 5,
c: 6
}

ってあって
test.aからtest.cまでの値をループで取得しようと思ったらどうすればいいですか?

746Name_Not_Found2018/02/17(土) 16:16:29.54ID:???
3Dモデルでないと不自然になるよ

747Name_Not_Found2018/02/17(土) 16:19:34.31ID:???
>>745
『javascript test.aからtest.cまでの値をループで取得しようと思ったらどうすればいいですか?』
のGoogle検索結果を見ていけばわかる

748Name_Not_Found2018/02/17(土) 16:26:59.42ID:???
for(let [key, value] of Object.entries(test)){
console.log(key + ':' + value);
}
こうするとちょっとPHPっぽい

749Name_Not_Found2018/02/17(土) 17:13:27.27ID:???
>>745
for (let v of Object.values(test)) {
console.log(v);
}
とか
Object.values(test).forEach(v => {
console.log(v);
});

750Name_Not_Found2018/02/17(土) 17:23:12.09ID:???
こっちのが汎用的だったか
Object.entries(test).forEach(([key, value], index) => {
console.log(key, value, index);
});

751Name_Not_Found2018/02/17(土) 17:51:17.23ID:???
なんで標準のJavaScriptを使うと
冗長になるのか教えてほしいものだ。

lodashを使ったほうが短いとか意味分からん
_.forOwn(test, (value, key) => {
 console.log(key + ':' + value);
});

752Name_Not_Found2018/02/17(土) 18:17:17.64ID:???
どの言語も普通は標準よりライブラリ使った方が短くならね?

753Name_Not_Found2018/02/17(土) 18:54:43.59ID:???
だよなw
いつものlodashくんがスレチ話するためのエクスキューズのつもりなんだろw

754Name_Not_Found2018/02/17(土) 21:34:02.04ID:???
自作の関数作ればもっと短くなるよね
はいlodash敗北

755Name_Not_Found2018/02/17(土) 21:39:19.11ID:???
ほんとlodashの名前が出るだけで
必死になるなw

756Name_Not_Found2018/02/17(土) 22:26:40.80ID:???
for( var key of test )とかfor( var key in test )じゃダメなん?

757Name_Not_Found2018/02/17(土) 22:58:02.30ID:???

758Name_Not_Found2018/02/17(土) 23:23:30.35ID:???
>>756
前者はそもそもエラーなので論外
後者は普通にあり
entriesやvaluesは使えない環境も多いしね
個人的にはObject.keysを使うことが多いかな
よっぽど大量にループさせるんならfor..in使うけど

759Name_Not_Found2018/02/17(土) 23:59:58.10ID:???
使えない環境はあるがけして多くはない
そんなことを言ったら何もできない
いつまでレガシーブラウザを延命させる気なんだ

760Name_Not_Found2018/02/18(日) 05:22:16.55ID:???
for..inで十分にできて、key / valuesが key / test[key] になる程度の違い
構造は明示されてて
構造が未知だったり完全に信頼できなかったりしない
javascriptはゴルフ絶対主義なんか

761Name_Not_Found2018/02/18(日) 06:20:37.10ID:???
for-inのデメリットは.hasOwnProperties()のチェックを入れるかどうかの問題が発生するから

もちろんオブジェクトにそのチェックが不要だという保証があるなら.hasOwnProperties()で調べる必要はない

762Name_Not_Found2018/02/18(日) 06:23:06.86ID:???
>>745を見れば一目瞭然だな

763Name_Not_Found2018/02/18(日) 06:44:57.56ID:???
hasOwnPropertiesやっててよかったとか
今までに一度もないなw

764Name_Not_Found2018/02/18(日) 08:22:54.79ID:???
for..inは式ではなく文なのがちと煩わしい
とはいえ素のJavaScriptで
Object.values(test).filter(x => x % 2 === 0).map(x => x * 2)
みたく書くと無駄に何度も配列作っちゃうから、そういう意味ではlodashが羨ましい

765Name_Not_Found2018/02/18(日) 09:25:19.82ID:???
プロゴルファー?

766Name_Not_Found2018/02/18(日) 11:31:30.39ID:???
何度も配列作らなくてもforEach内の処理で十分な場合が多い
filterとかしなくてもif returnで良いんだし

767Name_Not_Found2018/02/18(日) 12:02:31.01ID:???
はいはい、俺様専用

768Name_Not_Found2018/02/18(日) 13:05:05.05ID:???
>>766
処理分離したいし破壊的代入はなるべく避けたいじゃん?

新着レスの表示
レスを投稿する