X



+ JavaScript の質問用スレッド vol.131 +
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2017/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にして見えないようにしてください。文句をつける=荒らしです
0057Name_Not_Found
垢版 |
2017/11/29(水) 02:48:43.74ID:???
0は成功してる可能性もあるぞ
0059Name_Not_Found
垢版 |
2017/11/29(水) 07:14:56.47ID:???
>>56
プロトコルもホスト名もポート番号すら違って、同一オリジンと見なされるわけがない
CORSについて勉強し直すべき
0060Name_Not_Found
垢版 |
2017/11/29(水) 20:19:58.42ID:???
SPAみたいなアプリを作るんですが、内部の状態を全部保存して、次にアプリを表示したときに
復元するのですが、普通の静的型付け言語ならモデルにメソッド追加したりしても、
大抵は元に簡単に戻せるんですが、JavaScriptではどうすればいいんでしょうか??
JSONじゃなくてもいいんですが、自前でシリアライズ・デシリアライズする処理を
かいてるんでしょうか??
0061Name_Not_Found
垢版 |
2017/11/29(水) 21:10:01.55ID:???
メソッドごと保存しようというのは正しくない
まず、仮想DOM的なものを設計して、HTMLでもCanvasでもアタッチ出来るくらいのビューを用意する
そしてそのビューに対してこれからどういう変更を加えるか、加えてきたかのアクションチェーンを設計する
実行はアクションチェーンを読み出しつつ各アクションの種類に応じてswichを使ったりして行う
保存はアクションチェーンオブジェクトと仮想DOMオブジェクトをそのままIndexedDBなんかに保存すれば良い
JSONは循環参照を扱えないのでオススメしない、まあ循環参照だけならほぐしてJSON化可能だが
画像なんかのバイナリも別に保存したいこともあろうからIDBがオススメ
1アクション中のアニメーションだったり、もうちょっと工夫が必要だがそれで概ね上手くいく
00621/2
垢版 |
2017/11/29(水) 21:24:24.05ID:???
>>60
なんかいろいろずれてる気がするな
web製作板なのだからウェブアプリってことでいいのか?
SPAみたいなアプリを作ると書いているが、あなたが書いている内容は
SPAとは関係ない話になっている。

まず
> 内部の状態を全部保存して、次にアプリを表示したときに復元するのですが、
と書いてあるがウェブの世界ではSPAでなくとも一般的にサーバーにデータを保存し、
ページを表示した時にサーバーからデータを取ってくる。SPAではそれがページ単位ではなく
何かしらのコンポーネント単位になることもよくある

> 普通の静的型付け言語ならモデルにメソッド追加したりしても、
> 大抵は元に簡単に戻せるんですが、
一般的にシリアライズっていうのはデータのみを保存するのだから
モデルへのメソッドを追加に関しては、静的型付け言語かどうかは関係ない

シリアライズが(簡単に)可能かどうかっていうのはクラスのインスタンス変数を
全て取得する方法を言語やライブラリが提供しているかどうかにかかっている
JavaやRubyはそれが可能なので簡単に実現できるが
JavaScriptはではそういったことは完璧にはできないので出来たとしても制限がある
一般的にできないと考えたほうが良い

とはいっても、JavaScriptのobject(配列や連想配列)≒JSONなのでJavaScriptのクラスが
持っているデータをobjectとして管理していれば、比較的簡単にJSON化できる。
なおJSONではなく他のバイナリデータにシリアライズするライブラリも有ったはず

そして「次にアプリを表示したときに復元する」というのはobjectを表現するデータを
JSON形式でもいいし、そうでない形式でも良いが、サーバーに保存することになる
オブジェクト自身を保存するというより、中身のデータを保存するという感じ
まあつまりは自前でシリアライズ・デシリアライズする処理を書くことに相当するわけだが
繰り返すがJSON形式を用いればそれは大したことじゃない
00632/2
垢版 |
2017/11/29(水) 21:30:41.02ID:???
そしてSPAとは関係ない話では有るが、SPAを実装する時は
自力で作るのではなく、何らかのフレームワークを使ったほうが良い

残念ながら俺はSPAフレームワークには詳しくないのだが、
SPAを作りやすくする"フレームワーク"として機能で
オブジェクトをシリアライズ・デシリアライズする機能があるかもしれない。

つまりフレームワークが決めたルールに従って作ることで
モデルを簡単にシリアライズしたりデシリアライズできる。
そういう機能があるかないかはしらないが、自力でSPAアプリを作るのは骨が折れるので
SPAアプリを作るというのが本当の目的であれば、
まずSPA対応のフレームワークの使い方を勉強することをおすすめしたい


ちなみになぜ「SPAアプリを作るというのが本当の目的であれば」なんて
わざわざ言ってるのかというと繰り返すが>>60の内容はSPAアプリを
作る時の話とは関係ないから
0064Name_Not_Found
垢版 |
2017/11/29(水) 21:41:57.38ID:???
>>60ですが、そこまでは書きませんでしたが、実際はReactを使います。で、それと他にRedux使うかMobX使うかとか
どうするか色々調べてるところです。例えば、MobXとか使うと元のオブジェクトがラップしてオーブザーバルになるみたいんです。
React使う前にも他にデータバインディングできるライブラリを調べると、元のオブジェクトをラップしたり
とか何種類か方法があるみたいんですが、そららを使うと
JavaScriptのobject(配列や連想配列)≒JSONじゃなくなるっぽいので、一般的にどうすればいいのかなと
思った次第です。
0065Name_Not_Found
垢版 |
2017/11/29(水) 21:51:40.81ID:???
漏れもブラウザで、ローカルHTML・JS ファイルから、
jQuery のAjax で、2ch にアクセスしようとしたけど出来なかった

iframe 内になら取得できるけど、外側のHTMLファイルからは、アクセスできない。
内外で、異なるサイトに扱われるから

そこで、ブラウザから、YQL(Yahoo! Query Language)のサービス・サーバーを利用して、
アクセスする方法があった。
jquery.xdomainajax.js も、YQLを使っていたけど、動かなくなった

異なるサイト同士では、直接アクセスできない。
Node.js とか、Node.jsを含んだ、Electron など、
サーバーを立てて、サーバーを介して通信しないといけない
0066Name_Not_Found
垢版 |
2017/11/29(水) 21:52:12.00ID:???
JavaScript一般的にはシリアライズする方法はないので自力でやる必要がある。
そこら辺をフレームワークがカバーしている(かもしれない)
というのが答かな


もともとJavaScriptはクラスなんてものはなかったから
シリアライズすべき変数はなんや?って話なんだよ。

ローカル変数を使われるとクラス(に相当する関数)の外から見る方法はないし、
関数を値として扱えるから、関数のコードをシリアライズするの?って話まででてくるし
0067Name_Not_Found
垢版 |
2017/11/29(水) 21:55:27.62ID:???
>>65
YQLなんていずれだめになるだろう
あれは使うべきではない
0068Name_Not_Found
垢版 |
2017/11/29(水) 22:00:32.30ID:???
入門 React ――コンポーネントベースのWebフロントエンド開発、2015

Reactビギナーズガイド ――コンポーネントベースのフロントエンド開発入門
Stoyan Stefanov, 2017

Stefanov の本では、Flux を使って、JSON で、localStorage に保存している。
まあ、これは例題だから、実際には、DB を使うのだろう
0069Name_Not_Found
垢版 |
2017/11/29(水) 22:03:37.19ID:???
怖い例題だな
ブラウザ開発者の機嫌次第で一発でふっとびそう
0070Name_Not_Found
垢版 |
2017/11/29(水) 22:14:18.15ID:???
>>68
> JSON で、localStorage に保存している。
そこは(どうでも)いいんだよね。
表現形式と保存場所の話だから

シリアライズっていうのはオブジェクト(クラスのインスタンス)を
どうやって保存できる形式に変換するかって話だから

その本ではクラスのインスタンスのシリアライズの話をしてる?
0072Name_Not_Found
垢版 |
2017/11/29(水) 22:34:24.67ID:???
>>64ですけど、
>>66
>もともとJavaScriptはクラスなんてものはなかったから
>シリアライズすべき変数はなんや?って話なんだよ
ありがとうございます。
いったんクラスというのも忘れて真剣に考えないとダメっぽいですね。

>>68
そうですね。redux使うと、完全にStoreはシンプルになるので、そのまんまシリアライズ・デシリアライズ
できそうなんで、そこは楽そうなんですが、redux自体がactionやらactionCreaters,Reducersやらで・・
0073Name_Not_Found
垢版 |
2017/11/29(水) 22:43:31.41ID:???
Reactビギナーズガイド ――コンポーネントベースのフロントエンド開発入門
Stoyan Stefanov, 2017
https://github.com/stoyan/reactbook

whinepad という名前で、Excel みたいな表を作っている

インスタンスの保存だけど、メソッドは保存しない。
保存するのは、データだけ
0074Name_Not_Found
垢版 |
2017/11/29(水) 23:12:17.69ID:???
>>53
なんか素で勘違いしてそうだからレスするけど
スレをいっぱい立てまくってたのが件のテンプレ改変した人であり前スレとここの>>1だよ
0075Name_Not_Found
垢版 |
2017/11/29(水) 23:28:35.87ID:???
スレをいっぱい立てまくっていたのが、荒らしだろ?
それで皆、苦労したんだろ?

このスレは、荒らしが立てたスレか?
まあそれなら、再利用すればよい

とにかく荒らしは、議論させないように、皆の邪魔をする。
jQuery の話をするなとか、Lodash の話もするなとか、DOM の話もするなとか、
荒らしの言う通りやっていたら、スレが細分化されて、議論できなくなる。
そうやって、ここのコミュニティをつぶすつもりだろ

スレを分けるなら、プログラム板のように、
初心者向け・上級者向けに分けるべき
0076Name_Not_Found
垢版 |
2017/11/29(水) 23:32:17.41ID:???
その話いい加減にしてくれないかな?
いま問題なく進行してるだろうが
0077Name_Not_Found
垢版 |
2017/11/29(水) 23:46:16.66ID:???
スレ議論スレでも作れば
0078Name_Not_Found
垢版 |
2017/11/29(水) 23:48:36.69ID:???
>>77
はいどうぞ。そしてその末路も見ていってください。
投票結果見て明らか。議論にすらならない。やるだけ無駄

+ JavaScript の質問用スレッド vol.123 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1491143438/33

33 名前:デフォルトの名無しさん (ワッチョイ 75d1-JAgm [114.169.237.158])[] 投稿日:2017/11/19(日) 16:06:59.97 ID:ANnOsUYp0
投票です。

現在JavaScript関連にはまともなスレがありません。
新しいスレを立てた方がいいと思いますが賛同する方はいますか?

新しいスレの内容の条件

・JavaScriptだけを扱う(AltJSやBabelやTypeScript禁止)
・ブラウザのDOM APIだけを使う(jQueryなどのライブラリやフレームワーク禁止)
・サーバーサイド禁止(nodejsなど禁止)
0079Name_Not_Found
垢版 |
2017/11/29(水) 23:53:10.48ID:???
>>78
thx
あったんだ、知らなかった・・・
0080Name_Not_Found
垢版 |
2017/11/30(木) 00:12:37.60ID:???
>新しいスレの内容の条件

>・JavaScriptだけを扱う(AltJSやBabelやTypeScript禁止)
>・ブラウザのDOM APIだけを使う(jQueryなどのライブラリやフレームワーク禁止)
>・サーバーサイド禁止(nodejsなど禁止)

これが、荒らしが作りたいスレだろ?
何も、コミュニティが交流できないように作っている

荒らしの言う通りやっていたら、スレが細分化されて、議論できなくなる

次スレからは、プログラム板のように、
スレを初心者向けと、普通用に分けてくれ
0081Name_Not_Found
垢版 |
2017/11/30(木) 00:34:22.31ID:???
初心者用と普通用ということであれば話題の内容は一緒だ。
どちらもライブラリの話題も対象となる。
0082Name_Not_Found
垢版 |
2017/11/30(木) 00:46:22.21ID:???
というと反対してくるんだろうな
結局ライブラリの話題を禁止したいだけ
0083Name_Not_Found
垢版 |
2017/11/30(木) 00:50:52.17ID:???
初心者用は、主に言語の文法などが、わからない人向け。
普通用は、フレームワーク・ライブラリも含める

プログラム板もそうだし、これで良い
0085Name_Not_Found
垢版 |
2017/11/30(木) 01:23:35.71ID:???
また、初心者用のスレを勝手に立てて、ライブラリ禁止とか書いてる

こいつがいつもスレを一杯立てる、荒らしじゃないのか?
0086Name_Not_Found
垢版 |
2017/11/30(木) 01:28:02.36ID:???
初心者専用のスレがほしいって言ったから立ててやっただけだろ
あとは勝手にメンテしろや
俺は最初からいらないって言ってる
0087Name_Not_Found
垢版 |
2017/11/30(木) 02:50:24.30ID:???
初心者って言ってもどのような初心者かわからないんだから
分けるんなら目的に応じて分けないと駄目でしょ

JavaScript.DOM勉強スレ(ただしライブラリ排除ではなく、あくまでDOMや標準APIから学んでいく事をモットーとした勉強のためのスレ)と
JavaScript解法相談スレ(JSをできるだけ深く学習する事なくライブラリやツールを駆使して簡単に問題を解決する事をモットーとしたスレ)
で分けよう

これまでの質問スレは終了
0088Name_Not_Found
垢版 |
2017/11/30(木) 06:42:10.12ID:???
ライブラリ禁止とか、DOM禁止とか、jQuery禁止とか、
色々な制限を加えて、皆が議論できないようにしてる

禁止事項を勝手に作って、スレを一杯立ててる、こいつが荒らし

今まで、Lodash厨が荒らしかと思っていたけど、荒らしじゃなかった。
誰が荒らしか、ようやく分かった
0089Name_Not_Found
垢版 |
2017/11/30(木) 08:27:32.88ID:???
>>87
勝手にスレ作って勝手に保守してろ
ここが嫌ならさっさとでていけ
0090Name_Not_Found
垢版 |
2017/11/30(木) 20:23:32.06ID:???
ライブラリ禁止とか、DOM禁止とか、jQuery禁止とか、
色々な制限を加えて、皆が議論できないようにしてる

結局、スレのテンプレを勝手に変えて、禁止事項を勝手に作って、
スレを一杯立てている奴が荒らしだな

ライブラリ用スレとか、jQuery用スレとか、
スレを分割して、皆が議論できないようにしたのも、この荒らしか

皆、荒らしと会話しないように。
もし気付かず、荒らしと会話している人がいたら、荒らしと教えてあげて
0091Name_Not_Found
垢版 |
2017/11/30(木) 20:36:33.57ID:???
テンプレを勝手に変えた>>1も荒らしということだな
>>1を相手にしないように
0092Name_Not_Found
垢版 |
2017/11/30(木) 21:08:37.84ID:???
既存の配列に他の配列を連結したいのですが、1発でやる方法はないでしょうか?
for (let sourceItem of sourceItems) destItems.push(sourceItem);
現状、ループを回しています。
0093Name_Not_Found
垢版 |
2017/11/30(木) 21:38:08.27ID:???
新しい配列で良いなら
destItems.concat(sourceItems)
0095Name_Not_Found
垢版 |
2017/11/30(木) 22:02:59.31ID:???
pushにこだわるなら
Array.prototype.push.apply(destItems,sourceItems);
あるいは
destItems.push(...sourceItems);
0096Name_Not_Found
垢版 |
2017/11/30(木) 22:36:42.10ID:???
既存の配列を書き換えたいのです。要は破壊的結合で。
destItems.push(...sourceItems);
ああ、pushでそんな書き方できたんですか・・
>>28で教えてもらったスプレッド演算子ってやつですね。
ありがとうございます。
0097Name_Not_Found
垢版 |
2017/12/01(金) 02:33:38.45ID:???
スプレッドって巨大な配列でやろうとするとエラーになるから嫌いなんだよな
0099Name_Not_Found
垢版 |
2017/12/01(金) 08:34:48.80ID:???
配列長の制限値を超えた配列作ろうとすればそりゃエラーになるが
別にスプレッド関係ないわな
0100Name_Not_Found
垢版 |
2017/12/01(金) 09:38:33.33ID:X7oqfLY+
こんな式を見たのですが、これは何ですか?
var data = ('' == 0 ? '' : '');
0102Name_Not_Found
垢版 |
2017/12/01(金) 09:52:55.80ID:X7oqfLY+
>>101
では、このコードを書いた人はどういう意図で書いたのでしょうか?
JavaScript専門家の方の推理を聞かせて下さい。
0103Name_Not_Found
垢版 |
2017/12/01(金) 11:35:39.13ID:???
>>102
・あなたか「書いた人」が転記ミスしている
・「書いた人」が文法をよくわかっていない

文法エラーは関わった人に問題がある以外に考えられないので、第三者が推理するのは時間の無駄です。
大抵はあなたか「書いた人」が頭の中のイメージで転記しているだけで転記ミスしているケースが大半です。
0104103
垢版 |
2017/12/01(金) 11:46:06.60ID:???
>>101を鵜呑みにして書いてしまいましたが、文法エラーはないですね。
>>100

var data = '';

と等価で>>100のように回りくどい書き方をする必要は全くありません。
説明用のコードか、難読化の一環なのか知りませんが、コードの意図は書いた人に聞く以外の方法はないでしょう。
0105103
垢版 |
2017/12/01(金) 11:48:12.00ID:???
>>104

・あなたが転記ミスをしていないのなら
・「書いた人」が転記ミスしていないのなら

の条件付きの回答です。
その可能性を捨ててはいけないと思います。
0106Name_Not_Found
垢版 |
2017/12/01(金) 17:40:23.92ID:???
>>98-99
var a = [0]; として Chrome62の場合
a.push(...a); を繰り返すとlengthが131072の時点で Maximum call stack size exceeded
a=a.concat(a); の場合はlengthが33554432の時点で Invalid array length

引数の問題だからスプレッド自体に問題が有るわけではないけどな
0107Name_Not_Found
垢版 |
2017/12/01(金) 23:36:41.01ID:???
jQueryが必要とされなくなってきたのは,Reactなどの他のフレームワークが登場したせいではなく,標準DOM APIが進歩したおかげです
https://www.ncaq.net/2017/12/02/00/00/01/

またなんか勘違いさんというかw、結論ありきさんというかw

標準DOM APIがいくら進歩したとしても、jQueryにかなわないんだよ。
それは基本的な設計方針の違いのせい

jQueryも標準DOM APIも、どちらもDOM操作をする。
"DOM操作をするならば"、標準DOM APIよりもjQueryの方が優れてるわけで
わざわざjQueryを捨てる理由はない

その一発逆転がありえるのがReactなどのフレームワーク案だよ
"DOM操作をするならば"、jQueryや標準DOM APIが必要
だけど "DOM操作をしないならば"・・・?

そうDOM操作がいらないフレームワークがでてきたから
JavaScriptフレームワーク導入可能な一部の業種においては
jQueryや標準DOM APIがいらなくなってきたという話
DOM操作がいるならば、これからもjQueryが必要だって
0108Name_Not_Found
垢版 |
2017/12/02(土) 00:00:42.05ID:???
 jQueryをフレームワークにすればと思うけど
0109Name_Not_Found
垢版 |
2017/12/02(土) 01:01:06.91ID:???
>>100-105
式 ? a : b
3項演算子は、式が真なら a で、偽なら b だろ

var data = ('' == 0 ? '' : '');
式 ? a : a

式が、真でも偽でも、空文字を返すから、この式は無意味。
単に空文字を代入すれば良いだけ
0110Name_Not_Found
垢版 |
2017/12/02(土) 01:25:47.76ID:???
あー、まだ >>100の答え出てなかったのか?

var data = ('' == 0 ? '' : '');

これは最終的にこう書いてあるってだけ。そう最終的に

これだけじゃわからんのよ。
間違いかもしれないし意味があるかもしれない。

もしかしてソースコードはこうなっているかもしれない

var data = ('<?= $v' ?>' == 0 ? '' : '<?= $v' ?>');


$vに0が入っていれば
var data = ('0' == 0 ? '' : '0');
0なら空文字

var data = ('1' == 0 ? '' : '1');
1(0以外)なら1

var data = ('' == 0 ? '' : '');
空文字でも空文字

0の場合だけ空文字になる
0111Name_Not_Found
垢版 |
2017/12/02(土) 01:26:42.28ID:???
訂正

var data = ('<?= $v ?>' == 0 ? '' : '<?= $v ?>');
0112Name_Not_Found
垢版 |
2017/12/02(土) 01:29:18.11ID:???
もちろん、意味があるコードかもしれないとは言うが
無駄かつ良くないコードだとも言う
普通はこんな書き方はしない。
こんな書き方はしないが意味が無いとは言い切れない
0113Name_Not_Found
垢版 |
2017/12/02(土) 09:12:56.52ID:???
>>112
無駄なコードを意味がないコードと表現してるだけだろ
言葉遊びも程々にしろ
0115Name_Not_Found
垢版 |
2017/12/02(土) 09:22:55.15ID:???
三項演算子を出力する意味がない
0116Name_Not_Found
垢版 |
2017/12/02(土) 18:16:31.30ID:???
>>113
「0だったら空文字にしたい」という要望があったとしたら
それを正しく実装しているわけで無駄ではないよ
0117Name_Not_Found
垢版 |
2017/12/03(日) 00:19:35.36ID:???
>>116
それは三項演算子ではなく、ただのif文だろ
それと「無駄かつ良くないコードだとも言う」に言及して反論してるのだが、前言撤回もここまで早いと信頼性ゼロだな
0118Name_Not_Found
垢版 |
2017/12/03(日) 00:42:59.95ID:???
>>117
少なくともifであることは認めたようだが
あんたにとって三項演算子とifの違いって何?
0119118
垢版 |
2017/12/03(日) 00:44:06.26ID:???
> var data = ('<?= $v' ?>' == 0 ? '' : '<?= $v' ?>');

これはやってることに意味があるが
無駄かつ良くないコードだろ
何を反論してるんだ?
0120Name_Not_Found
垢版 |
2017/12/03(日) 00:46:44.07ID:???
>>118
質問の意図が分からんし、「無駄かつ良くないコードだとも言う」の否定に反論がないなら、話はここで終わりだな
0121Name_Not_Found
垢版 |
2017/12/03(日) 00:47:37.59ID:???
> 質問の意図が分からんし、「無駄かつ良くないコードだとも言う」の否定に反論がないなら

無駄かつ良くないコードだと言ったのは俺なんだが、
なんで俺が自分が行った言葉に反論しなきゃいけないんだ?
0122Name_Not_Found
垢版 |
2017/12/03(日) 00:48:48.68ID:???
無駄かつ良くないコードだが
ちゃんと動く

っていうことの意味が分からんのかな?

俺ここでよく無駄かつ良くないコードを
修正してるんだが
0123Name_Not_Found
垢版 |
2017/12/03(日) 00:49:05.59ID:???
>>119
>>112では「無駄」と認めながら>>116では「無駄ではない」といってるだろ
前後で主張が変化する奴は信用できない
0124Name_Not_Found
垢版 |
2017/12/03(日) 00:50:11.59ID:???
あ、揚げ足取っていただけかw
0125Name_Not_Found
垢版 |
2017/12/03(日) 00:54:47.33ID:???
揚げ足ではないような
自己矛盾を抱える人は日本語が分かってない人という典型かな
0126Name_Not_Found
垢版 |
2017/12/03(日) 01:10:35.99ID:???
日本語がわからんやつは困るね。いちいち説明せんといかんのかね
コードが無駄だってだけで動作は無駄じゃないってことだよ
ちゃんと書いてあるだろ
0128Name_Not_Found
垢版 |
2017/12/03(日) 14:11:59.68ID:???
じゃあ無駄じゃない動作とは?
0130Name_Not_Found
垢版 |
2017/12/03(日) 16:24:26.70ID:???
必要なことをやっているけど無駄の多いコードは冗長なコードというべきではないか
0131Name_Not_Found
垢版 |
2017/12/03(日) 17:55:51.86ID:???
1 + 1 // ->
で2が出力されるのですが、これは何でしょうか???
0133Name_Not_Found
垢版 |
2017/12/04(月) 13:17:53.26ID:???
> 必要なことをやっているけど無駄の多いコード
「必要」と「無駄」は対義語
必要なことをやっているなら無駄ではない
0134Name_Not_Found
垢版 |
2017/12/04(月) 13:19:29.68ID:???
>>132
なるほど、この場合はコードに無駄が多くて長いが
処理そのものには意味がある(無駄ではない)ってことだな
0135Name_Not_Found
垢版 |
2017/12/04(月) 13:20:38.96ID:???
>>133
必要の対義語は不必要ってでてきたけど?
0136Name_Not_Found
垢版 |
2017/12/04(月) 18:31:21.62ID:???
必要かつ無駄は矛盾してると思うけどね
0137Name_Not_Found
垢版 |
2017/12/04(月) 18:45:27.08ID:???
>>136
日本語ひどすぎねぇか・・
「必要」かつ「無駄」ってそれぞれ修飾してる語が違うんだけど
0139Name_Not_Found
垢版 |
2017/12/04(月) 18:48:18.37ID:???
>>137
俺は無駄なコードを書いている
俺は必要なことをやっている(無駄なコードを書く事は必要である)
0140Name_Not_Found
垢版 |
2017/12/04(月) 21:08:50.03ID:???
必要なことをやっているコードと
必要なことだけで書かれてるコードは違うだろう
0141139
垢版 |
2017/12/04(月) 21:14:31.74ID:???
意味不明な論理だし、直接的に反論しないところがいやらしいな
0142Name_Not_Found
垢版 |
2017/12/04(月) 21:18:43.71ID:???
つまりダムってことだな
0143Name_Not_Found
垢版 |
2017/12/04(月) 21:20:39.67ID:???
>>112はいつもの日本語破綻者だしなあ
曖昧に濁して、相手の反応を伺う事で糸口を探してるんだろ
0144Name_Not_Found
垢版 |
2017/12/04(月) 21:53:11.51ID:???
> 必要なことをやっているけど無駄の多いコード
そもそも、これは「無駄なコードを残すことに意味がある」と主張したいが為の論理でしょ
「必要」と「無駄」の修飾先が違うのなら、必要なAだけ残して無駄なコード(B)を排除すれば良いだけ
よって、「無駄なコード(B)を書く事に意味はない」と結論される
どちらにしても、論理が破綻してるんだよ
0145Name_Not_Found
垢版 |
2017/12/04(月) 22:13:47.23ID:???
カレンダーのマス目に編集ボタンが配置されていて、編集ボタンをクリックすると編集画面が表示されるページを作成しています。ここでお尋ねしたいのが、idの名前の付け方です。
今は、id=btnEdit20171201、id=btnEdit20171202と名前を付けていますが、より良い名前の付け方はありますか?
0146Name_Not_Found
垢版 |
2017/12/04(月) 23:25:30.85ID:???
idをつけない、という選択肢もあるんじゃないかな
押したボタンから日付を取得したいなら、カスタムデータ属性なり、button要素でvalue属性を使うなり、手はいくらでもある
0147Name_Not_Found
垢版 |
2017/12/04(月) 23:48:01.31ID:???
>>145
>>146も書いているけどそういうIDが必要になるのがおかしい気がするね。
JavaScriptのスレに書いてるってことは、JavaScriptからそれらを参照するつもりなのだろう

本題の前に言っておくと、普通HTMLでは全部小文字でハイフン区切りが多い
btn-edit-20171201 みたいに。なぜかはよく分からんけどアンダースコアはあまり使われない
まあそれでもBEMみたいな変則的なものは有るし、強制ではない

んで、本題。あーだこーだ言いたいが、まあ要するにIDなしでやる方法を知らんのだろう?
なので軽くサンプルを書いてあげよう
https://jsfiddle.net/bfw0m3p6/
0148Name_Not_Found
垢版 |
2017/12/05(火) 00:40:08.94ID:???
>>146,147
ありがとうございます。とても参考になりました。idを振らずにイベントをトリガーしたり、カスタムデータ属性を使う方法などがあるのですね。
編集画面でクリックされた日の年月日を引き継いで表示したりすることを考えると、カスタムデータ属性が面白そうですね!
0150Name_Not_Found
垢版 |
2017/12/06(水) 17:17:54.46ID:6QjIZVj3
['みかん','りんご','みかん','ばなな','りんご','りんご',]から
一番出現回数の多い「りんご」を得るにはどうすればいいでしょうか?
0151Name_Not_Found
垢版 |
2017/12/06(水) 18:26:46.19ID:???
>>150
sort してから反復するとか

let a = [‘りんご’, … ];
a.sort();

let max = -1, // 最大出現回数
let count = 0, // 現在の単語の出現回数
let word, // 出現回数最大の単語

a.reduce(f);

function f(前, 次){
if(前 === 次){
count +=1
} else {
if( max < count ) { max = count; word = 前 }
count = 0;
}

みたいな感じ(細かい所は省略
0152Name_Not_Found
垢版 |
2017/12/06(水) 18:33:37.87ID:???
>>151
すまん、 reduce の使い方がダメダメだったので取り消す
0153Name_Not_Found
垢版 |
2017/12/06(水) 22:06:13.37ID:???
var fruitsArray:Array<String> = ['みかん','りんご','みかん','ばなな','りんご'];
var fruitsMap:Map<String, Int> = new Map();
var count:Dynamic;

for (fruit in fruitsArray) {
count = fruitsMap[fruit];
if(count == null){
count = 1;
} else {
++count;
}
fruitsMap[fruit] = count;
}
trace(fruitsMap);
// 出力 {みかん => 2, りんご => 2, ばなな => 1}

Haxe で書いた。以下で試して。
https://try.haxe.org/

Map に入れたけど、最大値が複数ある場合の、処理がわからない
0154Name_Not_Found
垢版 |
2017/12/07(木) 00:27:44.39ID:???
>>150
lodashを使った
https://jsfiddle.net/5azq6k7q/

const counts = _.countBy(['みかん','りんご','みかん','ばなな','りんご','りんご']);
const max = _.max(_.values(counts));
const picked = _.pickBy(counts, _.partial(_.eq, max));
const items = _.keys(picked);
console.log(items);
// => ["りんご"]

出現回数が最大のものが複数ある場合を考慮して複数返している
0155Name_Not_Found
垢版 |
2017/12/07(木) 15:49:48.80ID:???
>>154
ありがとうございます
やっぱりライブラリ使わないと難しそうですね
0156Name_Not_Found
垢版 |
2017/12/07(木) 21:15:11.79ID:???
>>155
別にライブラリ使わなくてもできるよ。
ただ見て分かる通り優れたライブラリを使うとこの程度の問題なら
複雑化の原因になる条件分岐やループを使わずに最小のコード量で実装できる
■ このスレッドは過去ログ倉庫に格納されています

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