X



+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2017/07/31(月) 21:10:56.03ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

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

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
0491Name_Not_Found
垢版 |
2017/10/16(月) 02:27:09.92ID:???
>>490
これはなかなかいいですね
オブジェクトのインスタンスメソッドで出来て欲しいですが、
keyとvalueだけでなくindexも取れるところもイケてると思います
0492Name_Not_Found
垢版 |
2017/10/16(月) 04:26:51.39ID:???
>>491
そのやり方は列挙順を保証出来ないから、順序がランダムで良いときしか使えない
もともと、オブジェクトのキーは列挙する事を想定したものでもないし、連祖配列的なものを望むなら、足りない機能が多くて苦労すると思うよ
0494Name_Not_Found
垢版 |
2017/10/16(月) 11:42:32.24ID:???
たしかにオブジェクトのメンバに順序は期待出来ないですが
ループの中でループカウンタが欲しくなることはわりとあるので、
そういう意味です
0495Name_Not_Found
垢版 |
2017/10/16(月) 16:38:35.98ID:???
未だにES5脳な奴がいるんだな
列挙の順序が保証されてないのはfor-in文とES5のObject.keys()
ES2015以降のObject.{keys,values.entries}()は保証されている
こんなんJSerなら誰でも知ってる常識だろう
0496Name_Not_Found
垢版 |
2017/10/16(月) 23:03:35.08ID:???
>>495
矛盾してるぞ

> こんなんJSerなら誰でも知ってる常識だろう

ES5脳なJSerは知らないだろ?
0497Name_Not_Found
垢版 |
2017/10/17(火) 00:58:39.12ID:???
JSは日進月歩なんだから
未だにES5脳な奴がJSerなわけ無いだろ
0498Name_Not_Found
垢版 |
2017/10/17(火) 01:08:17.62ID:???
JSerの定義でもめるぐらいなら、ES5erとES2015erに分けろ
JavaScript===ECMAScript2015ではないんだぞ
0499Name_Not_Found
垢版 |
2017/10/17(火) 08:24:06.23ID:???
async-awaitで逐次処理書いてる時に比較的長いタスクをやらせると
裏で動いているのかどうか分かんなくなるんですが。
定期的にconsole.logとかでログ出力していれば分かるんですが、
そうでない場合、逐次処理が実行中だってどうやって把握すればいいんですかね?
0500Name_Not_Found
垢版 |
2017/10/17(火) 10:53:45.44ID:???
そりゃconsole.logを適切な個数置くしか無いよ

それかメイン関数以外にあちこち置くのが嫌なら
await longTimeTask()
をpromiseが解決するまで一秒ごとにログを出すperiodicLogingを用意して
await periodicLoging( 'タスクA', longTimeTask() )
と書くとか、同様にしてタイムアウトさせたりするとか
0502Name_Not_Found
垢版 |
2017/10/17(火) 11:44:57.69ID:???
結局時間かかるのはIOかEvent待ちのネイティブの部分だからステップ処理は意味ない。
0503Name_Not_Found
垢版 |
2017/10/17(火) 11:44:57.97ID:???
結局時間かかるのはIOかEvent待ちのネイティブの部分だからステップ処理は意味ない。
0504Name_Not_Found
垢版 |
2017/10/17(火) 12:14:43.92ID:???
>>502
>>499の目的である「動作確認」は可能だと思うが、どういう理屈で意味がない?
0505Name_Not_Found
垢版 |
2017/10/17(火) 12:56:43.77ID:aQueuU1T
継続して動いてるか確認したいんじゃないの?
0506Name_Not_Found
垢版 |
2017/10/17(火) 13:39:59.38ID:???
そもそも確認したい動機が分からん
エラーハンドリングをあえてすっぽかしてない限り
棄却が伝わってこないと言うことは正常動作中ということで心配する必要ないだろう

パッチ処理とかで本当に10分とかかかるものなら
大本にProgressイベントが用意されていないのなら>>500のような感じになるだろうな
0507Name_Not_Found
垢版 |
2017/10/17(火) 19:45:01.86ID:/ojPgncR
str='黄と黄緑と緑'
.replace(/黄緑/g, '<span style="color:greenyellow">$&<\/span>')
.replace(/黄/g, '<span style="color:yellow">$&<\/span>')
.replace(/緑/g, '<span style="color:green">$&<\/span>')

黄緑にも色を付ける方法を教えて下さい
0508Name_Not_Found
垢版 |
2017/10/17(火) 22:11:32.36ID:???
>>507
その種の複数置換は結局
replace(/[黄緑]+/g, function(match){ … })
が簡単
0511Name_Not_Found
垢版 |
2017/10/17(火) 22:24:13.19ID:???
>>508 でmatchで条件分岐がおすすめだけど超簡単にするなら「黄緑」を一旦「青」とかにしてから最後に戻すとかでもいいよ
ほほえましくてよきよき
0512Name_Not_Found
垢版 |
2017/10/17(火) 22:26:20.78ID:ayamnkyL
>>507

str='黄と黄緑と緑'
.replace(/黄緑/g, '<span style="color:greenyellow">$&<\/span>')
.replace(/黄[^緑]/g, '<span style="color:yellow">$&<\/span>')
.replace(/[^黄]緑/g, '<span style="color:green">$&<\/span>')

>>508-510
正規表現ぐらいもうちょい頑張れwwwww
ぐぐりながらやってみたけど30分でできたぞwwwww

>>511
最悪の回答wwwwww
0514Name_Not_Found
垢版 |
2017/10/17(火) 22:50:06.29ID:???
>>511は思いついても考え直さないもんなのか
0516Name_Not_Found
垢版 |
2017/10/17(火) 22:51:56.76ID:???
>>514
だからほほえましくていいって書いたんだけどw
0517Name_Not_Found
垢版 |
2017/10/17(火) 22:54:21.53ID:???
>>514
あ、一旦「青」にするってのが、よくわからずやってた頃を思い出してほほえましくていいって意味です
0519Name_Not_Found
垢版 |
2017/10/17(火) 23:50:17.19ID:???
及ばないどころか間違えてるからね
0520Name_Not_Found
垢版 |
2017/10/18(水) 07:14:47.67ID:???
間違えてるのか?正常に動いてるように見える
正規表現ほとんど使わないからわからんわ
0521Name_Not_Found
垢版 |
2017/10/18(水) 09:17:27.29ID:???
[^緑] は「緑以外の1文字」だから /黄[^緑]/ だと「黄と」がヒットする
/[^黄]緑/ も同じ
なので結果は
<span style="color:yellow">黄と</span><span style="color:greenyellow">黄緑</span><span style="color:green">と緑</span>
ってなるはず
0522Name_Not_Found
垢版 |
2017/10/18(水) 09:24:18.76ID:???
jqueryでは
セレクタに要素を複数並べて要素の子孫の要素を選択することが出来ますが
このように要素を選択する方法は何というのでしょうか?
0523Name_Not_Found
垢版 |
2017/10/18(水) 09:45:20.65ID:???
セレクタ検索
それ以上でもそれ以下でもない
0524Name_Not_Found
垢版 |
2017/10/18(水) 11:21:24.13ID:???
>>521
しかも文頭の緑と文末の黄にはマッチしないしな
ECMAScriptだと後読み出来たっけか
0525Name_Not_Found
垢版 |
2017/10/18(水) 13:12:20.54ID:???
>>506
おー。ありがとうございます
Progressイベントなんてあるんですね。
独自の処理にもそう言うの用意できるんですかね。
0526Name_Not_Found
垢版 |
2017/10/18(水) 13:13:56.51ID:???
自前でonProgressプロパティに関数があれば呼び出してもいいし
EventEmitterみたいなモジュール使ってもいいし
DOMのカスタムイベント使ってもいいし
0527Name_Not_Found
垢版 |
2017/10/18(水) 13:45:25.52ID:???
>>524
後読みはES2018になりそう
現在モダンブラウザは要フラグ

>>525
async-awaitと組み合わせるのは工夫がいるよ
できればasync-generatorを使ってトランスパイルする
0528Name_Not_Found
垢版 |
2017/10/18(水) 15:18:12.29ID:???
>>508
ありがとうございます
その方法で出来ました
0529Name_Not_Found
垢版 |
2017/10/18(水) 15:52:59.55ID:???
ド素人ですみません
膨大なデータをJSONで書き出す処理をしようとしてます

大体1MBくらいで一区切りして、fs.writeFileで書き出して、for構文で繰り返す…
というような方法を取っています。

例えば10回繰り返すような設定をすると、処理が終わる度に1ファイル追加されるのですが
10回すべての処理が終わるまでファイルに何も書き込まれず、空っぽのままになります。
すべての処理が終わって初めて全てのファイルにデータが書き込まれる感じです

これが10ファイルくらいならいいのですが、大量に処理するときに困るので
毎処理ごとにデータが書き込まれるようにしたいです。

なにか方法があれば、お教えいただけると助かります
0531Name_Not_Found
垢版 |
2017/10/18(水) 16:12:44.08ID:???
書き込み終わるの待ってから次の処理始めれば?
0532Name_Not_Found
垢版 |
2017/10/18(水) 17:28:33.27ID:???
>>529
fs.writeFile に渡す callback の中で
書き込みの続きを継続するようにすれば期待する動作が得られるかも?
0533Name_Not_Found
垢版 |
2017/10/18(水) 18:52:49.70ID:???
みんなありがとう
ファイルへの書き込みが完了するまでループを一時停止する・・・と言う処理は可能でしょうか?
今はこんな感じです

  var ループ回数 = 10;
  for(var i=0 ; i > ループ回数; i++){
     var データ = 膨大なデータを生成する関数();
     fs.writeFile(ループ回数 + '.json', JSON.stringify(データ,'',' ') , function (err) {});
  }
0534Name_Not_Found
垢版 |
2017/10/18(水) 19:09:13.90ID:???
>>521
トンクス
上手く行ってるように見えてたわ
0535Name_Not_Found
垢版 |
2017/10/18(水) 19:17:44.67ID:???
>>533
同期版のfs.writeFileSyncを使うかasync/await使うか
0536Name_Not_Found
垢版 |
2017/10/18(水) 21:32:50.86ID:???
fs-extraがpromise返すようになったから使っとけ
0537Name_Not_Found
垢版 |
2017/10/18(水) 21:40:29.84ID:???
IOは内部で並列度が抽象化され、タイミングが最適化されてるから完全な制御は無理
0538Name_Not_Found
垢版 |
2017/10/18(水) 23:05:14.43ID:???
ファイルの読み込みでも、4つのファイルを、並列に読み込む
0540Name_Not_Found
垢版 |
2017/10/20(金) 20:50:24.54ID:???
for in使うとeslintに怒られるんですがなんか理由があるんですか?
0541Name_Not_Found
垢版 |
2017/10/20(金) 23:05:29.50ID:???
そういうのは積極的に調べていって言語に詳しくなるチャンスにすべきだと思うよ
結論から言うとfor of Object.keys()を使う
0542Name_Not_Found
垢版 |
2017/10/21(土) 12:36:49.64ID:???
>>511
元々の文字列に「青」があったら破綻するのでは
バックスラッシュのエスケープシーケンスのように、構文規則を作っておかないと破綻する

>>540
配列に for-in を使っているのでは
0544Name_Not_Found
垢版 |
2017/10/21(土) 12:55:52.81ID:???
>>507>>511
自分もこれでやるけど、翫とか見たことないような漢字にしとけばいいよ
正規表現だとノット条件がないから[^翫]で近いことが出来るようになるし、これが早くて楽だった
0545Name_Not_Found
垢版 |
2017/10/21(土) 13:20:57.67ID:???
バッドノウハウからは早く卒業しよう
0546Name_Not_Found
垢版 |
2017/10/21(土) 13:21:43.46ID:???
asyc-awaitつかってると使いたいところで使えないのが凄くもどかしい。
たとえばclassのコンストラクタで非同期処理を入れる方法ないかな。
0548Name_Not_Found
垢版 |
2017/10/21(土) 15:17:35.06ID:???
プログラミングを初めて、

配列を知った人は、これ便利と配列ばっかり使いだします。
連想配列を知った人は、これ便利と連想配列をばっかり使いだします。
クラスを知った人は、これ便利とクラスばっかり使いだします。

asyc-awaitを知った人は、これ便利とasyc-awaitばっかり使いだします。
0549Name_Not_Found
垢版 |
2017/10/21(土) 15:36:34.65ID:???
朝起きたら顔を洗って歯を磨きます。
0550Name_Not_Found
垢版 |
2017/10/21(土) 15:46:30.58ID:???
>>546
async関数はpromiseを返す関数だから
クラスのインスタンスを返すコンストラクタとは相容れない
まあ色々方法はあるけど、newして非同期にそれを改変するasync関数を用意するのが良いと思う

>>548
async-awaitばかりというのは悪くないと思うよ
ある特定の関数が開発していく途中でasyncにする必要が出てきたり必要が無くなったりもするしさ
そういうときawaitで受けてれば問題ないからね
0551Name_Not_Found
垢版 |
2017/10/23(月) 09:41:19.80ID:???
Face Detectionのライセンスがわかる方いますか?
もしくは顔検出出来るライブラリで他に商用利用可能なものがあったら教えていただきたいです
0552Name_Not_Found
垢版 |
2017/10/23(月) 11:59:26.95ID:???
firebaseってサーバーサイドで
node.jsなどを動かすことできますか?
0553Name_Not_Found
垢版 |
2017/10/23(月) 12:48:29.96ID:???
セレクトボックスAとBが横に二つ並んでいます
それぞれにJavaScriptで動的にoptionを追加したところ、BがAの下に移動してしましました
横に並べたまま要素を追加したいのですがどうすればいいでしょうか
0555Name_Not_Found
垢版 |
2017/10/23(月) 16:07:54.95ID:???
>>553
CSS でやるのが普通
方法はいくつかあるが flex が最も簡単だろう
0556Name_Not_Found
垢版 |
2017/10/23(月) 16:36:45.03ID:???
location.searchを手軽にjson化する標準APIってなかったでしたっけ?
なんかここで一度教えてもらった気がするんですが
0557Name_Not_Found
垢版 |
2017/10/23(月) 16:39:22.32ID:???
>>556
location.search はただの String 値なので、JSON化する余地はないと思うが
0558Name_Not_Found
垢版 |
2017/10/23(月) 17:39:07.61ID:???
String値もJSON化可能だよ
例えば`"abc"`はvalidなJSON
0560Name_Not_Found
垢版 |
2017/10/23(月) 18:36:08.62ID:???
>>558
そうかもしらんが、JSON.stringify(location.search); で解決する問題をわざわざ質問するかね…
0561Name_Not_Found
垢版 |
2017/10/23(月) 19:04:38.14ID:???
>>556
いや”key=value&”という形式をオブジェクトのkey-valueに変換してくれるやつを知りたいってことなんですが。
0564Name_Not_Found
垢版 |
2017/10/23(月) 22:58:09.95ID:???
>>561
> いや”key=value&”という形式をオブジェクトのkey-valueに変換してくれるやつを知りたいってことなんですが。

key1=valueA&key1=valueB&key1=valueC

の場合にどういう結果を期待してるの?
0566Name_Not_Found
垢版 |
2017/10/24(火) 08:17:35.63ID:???
こんなのあったんだ。知らなかった
0567Name_Not_Found
垢版 |
2017/10/25(水) 00:04:02.94ID:???
IEやiOSのSafariで使えないし
知らなくてもしょうがないかな
0568Name_Not_Found
垢版 |
2017/10/25(水) 00:07:30.23ID:???
Polyfillがあるし、WHATWGで標準化もされてる
常に最新仕様を追いかける人なら知ってると思うよ
0569Name_Not_Found
垢版 |
2017/10/25(水) 00:22:57.17ID:???
常に最新仕様を追いかけるのが目的の人
0570Name_Not_Found
垢版 |
2017/10/25(水) 01:59:00.44ID:???
仕様を追いかけるのが悪いことかのような書き方だな
0571Name_Not_Found
垢版 |
2017/10/25(水) 02:36:11.04ID:???
仕様を追いかけるのが悪いんじゃなくて
仕様を追いかけるのが目的となってるのが悪い
0573Name_Not_Found
垢版 |
2017/10/25(水) 07:45:55.20ID:???
むしろ目的でもないのに仕様を追っかけてる人の方が意味不明だが
0575Name_Not_Found
垢版 |
2017/10/25(水) 09:54:45.34ID:???
普通は必要になった時点で調べるよなw
0576Name_Not_Found
垢版 |
2017/10/25(水) 16:01:57.29ID:???
必要になった時点で調べるんじゃ三流
普通は必要になる前から知っておく
0577Name_Not_Found
垢版 |
2017/10/25(水) 20:12:59.51ID:???
deletedで気付いてたら手遅れだよな
0578Name_Not_Found
垢版 |
2017/10/26(木) 10:23:02.67ID:???
form要素の中に設置したラジオボタンのグループは
form要素.ラジオボタンに持たせたname
で取得できます
このグループはconsoleで確認するとRadioNodeListオブジェクトのようです
これはform要素の中にラジオボタンが格納された時にだけ作られる
特殊なオブジェクトのようですが
DOMツリーに組み込まれているのか、取得時に生成されているのか、
どっちなのでしょう?
0579Name_Not_Found
垢版 |
2017/10/26(木) 14:49:10.01ID:???
少し考えたらDOMツリーが最初からListを含んでるはずないと気づくだろ
0580Name_Not_Found
垢版 |
2017/10/26(木) 18:09:13.55ID:???
そうですか?
DOMツリーに詳しくないので分かりませんでした
コンテナとしてツリーに組み込まれていることもあるんじゃないかと思ったのですが、
そのたびごとに生成して返しているのですね
ありがとうございました
0581Name_Not_Found
垢版 |
2017/10/26(木) 20:51:07.15ID:???
考え方としてはchildrenと同じ
0582Name_Not_Found
垢版 |
2017/10/27(金) 00:38:52.31ID:???
どちらの考えも成り立つと思うが、>579の「ちょっと考えたら」は暴論な気がするな
実際、仕様のどこに書いてあるのか、を明示しないと本当の意味では解決にならない
(Array#length が動的に計算されるのか、静的データを参照するのか、という命題と似てる)
0583Name_Not_Found
垢版 |
2017/10/27(金) 02:01:09.78ID:???
RadioNodeList が継承する NodeListは
デフォルトでは live (静的でない)とDOM仕様に書いてある
特に静的とする記述はなかった(?)ような
0584Name_Not_Found
垢版 |
2017/10/27(金) 09:33:41.18ID:???
liveかどうかは関係ないでしょ
例えばa,b,cというオブジェクトとそれを含むツリーがあって
どこかにa,b,cへの参照を含むオブジェクトあっても、
それはツリーに含まれてるとは言えないから

つまりはこの問題はNodeListがDOMの木構造に含まれているかどうか
横着に言うとツリーを辿っていったときListに到達するかというと、
それはないなと分かる
0585Name_Not_Found
垢版 |
2017/10/27(金) 11:39:18.61ID:???
>>583
liveの実装はオブジェクトをキャッシュするだけで実現可能なので、liveな事が動的データである事を保証しているわけじゃないと思う
0586Name_Not_Found
垢版 |
2017/10/27(金) 11:45:00.82ID:???
>>584
ごめん、いってる意味が分からない

> どこかにa,b,cへの参照を含むオブジェクトあっても、
> それはツリーに含まれてるとは言えないから
なぜ?

> つまりはこの問題はNodeListがDOMの木構造に含まれているかどうか
ツリーに含まれているかどうかをどうやって判断するの?
0587Name_Not_Found
垢版 |
2017/10/27(金) 12:20:57.06ID:???
async-await便利だけど意図せず無限ループに入っていても
気づかないのがちょっと心配。
プロダクションビルドしてみるとやたらメモリリークするようになってはじめて
発覚した。
この辺を気づきやすくする方法ってなんかないかな。
0588Name_Not_Found
垢版 |
2017/10/27(金) 13:13:55.12ID:???
>>586
a.child==b,b.child==cの時、
[a,b,c]という配列を作ってもそれはツリーの一部ではないということ
ルートから辿れない物はそのツリーに含まれているとは言えない

そしてDOMツリーにListが含まれないことは自明
なぜならDOMツリーはNodeのツリーであり、NodeとはElementやTextであり、
NodeListは実際それらのサブクラスではないし、概念としてもかけ離れているから
0589Name_Not_Found
垢版 |
2017/10/27(金) 14:02:36.94ID:???
そもそも何で含む含まれないの区別をする必要があるんだっけ?
0590Name_Not_Found
垢版 |
2017/10/27(金) 15:01:09.70ID:???
ただ単純な興味だろうよ
まあこの手の設計思想は勉強しておくと自分が設計する際のセンスに近い部分ととして表れるから、馬鹿にはできない
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況