[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/07 09:57 / Filesize : 397 KB / Number-of Response : 1030
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2016/05/22(日) 19:51:33.37 ID:WwOYSBmy.net]
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

276 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 16:19:19.34 ID:uH1/jPAH.net]
>>271

func()だとその場で実行される。
setTimeout(func(), 0)だと関数(正確にはクリックなどの
イベントハンドラ)が終わってから実行される。

setTimeoutを使った場合、関数が終わった後にすぐに実行されるわけじゃなくて、
暇になってから実行される。暇っていうのはブラウザがやれなければいけない
レンダリングなどの処理を行って何もしなくなってからということ。

だから
・クリックなどのイベント → func()実行 → イベントハンドラ終了
・クリックなどのイベント → イベントハンドラ終了 → ブラウザの処理 → func() 実行
という違いがある。

277 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:29:54.45 ID:s6IpqRgC.net]
>>270
内容の真偽はともかく、そろそろ注意した方がいいんじゃね?
業務知識をこんなところに書くとか、社会人としての人間性を疑われてもおかしくないぞ。

278 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:34:17.73 ID:G8EDN3vd.net]
>>262
それなりのブライドはあるけれども、散々他人をこき下ろしたあなたに謙虚さを持ってないとはいわれたくないなあ
あなたには謙虚さがかけらも感じられない

> ところが、左右測ったけど右だけ測れなかった、それは、測ったって事実は残さないとならん。
> だが、右目のなんとか、が測れなかったわけではなく、右目の結果自体がまとめて、無い。
「右だけ測れなかった」としておきながら、「測れなかったわけではなく、右目の結果自体がまとめて、無い」は意味不明
「測れなかった原因」がさっぱり書いてないのに「再トライして測れない、というわけでも無い」の根拠はどこにあるのか
「測らなかった」ならともかく、「図れなかった」のなら「測れなかった原因」を記録に残さないと同じ失敗の繰り返しになる
右目の計測結果については「計測不能」として備考欄にでも「測れなかった原因」を記録に残しておくのが妥当

というか、いきなりこの人は何を言い出してるんだろうね
null云々よりもundefinedの扱いに非難が集中していたと思うけど

279 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 17:38:12.13 ID:G8EDN3vd.net]
>>271
func() の返り値となる関数オブジェクトが非同期に実行される
func() の返り値が関数オブジェクトではないのなら setTimeout は期待通りに動作しない

280 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:17:47.96 ID:eYOjmyco.net]
const o = document.getElementById('hoge');
こういう風にdomをconst

281 名前:ナ変数に入れても大丈夫ですか?
o.innerHTMLを書き換えたりoの中の子要素が変化してもエラーにならないんですが・・・
constって書き換えるとエラーになるんじゃなかったんですかね?
[]
[ここ壊れてます]

282 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 18:27:43.87 ID:uH1/jPAH.net]
>>277
書き換え不可能なCD-Rに、www.google.co.jp ってリンクが書いてあっても
それをクリックするたびに、表示される内容は変わるだろ?
それと一緒

283 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 19:30:52.11 ID:rcX9jYV5.net]
変数に入れるというより、値への名付け。(共有渡し)
そのひも付けが固定化されるというだけで値の変化は関与しない。

284 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:10:17.52 ID:roFUTjZ8.net]
結局undefined使うのはアリ?ナシ?

代入とか比較するのはダメ?
プロパティの有無を見るにはinやhasOwnPropertyで十分?



285 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:11:28.98 ID:qvzR6wN9.net]
>>270
言っていることは分かるのだけど、それは常識的なことであって、ああそうですか程度でしかない。

そこではなくて、他の人が批判しているのは、(ガチの本番系で)君の実装は駄目だろ、ということなんだよ。
俺は実装を聞いて、多分本番系ではなくて傍系だと思った。だからそれもありだというスタンスだったんだ。
(出先で確認するためとか、或いは他システムで代替も出来る状態)
ただ、それが本当にガチの本番系なのなら、それはマジであり得ないくらい酷い仕様だよ。

だってプリミティブに状態を割り当てるとか、せいぜい5〜6個しか無いんだから、将来的にヤバイでしょ。
(というか最初から無理だと思うが、、、)
おそらくやたらある状態をstringでそのまま持っているっぽいけど、それだと検索もしづらい。
タグなりコードなりを割り付けておかないと、書き方の揺らぎだけで検索から落ちてしまう。
undefinedを残しても特段メリットもなく、デバッグがしづらくなるだけ。NaNについても同様。
だから本当に君が君の案件の状況を理解できていて、プログラミングの腕前もあるのなら、その態度はないんだよ。

最初から組めるのなら、ど素人でもしない程の酷い実装になっている。(というか逆にそれで組む方が難しい)
多分、これまで少しずつシステムを組み上げてきて、キメラ状態になっている物をそのまま使っているのだと思う。
一言で言うと、
> 単に古いからなし崩し的に使ってるだけだと思うよ (>>240)
が多分当たってる。

冷静に考えてみればいい。今君はその案件の仕様を知っている。
そこでシステム刷新の機会があり、予算が十分付いたとして、今の実装を選ぶかい?

286 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:52:17.36 ID:pBCN0dYY.net]
>>273
詳しい説明ありがとうございました。かなり分かってきました。
>>276
>func() の返り値となる関数オブジェクトが非同期に実行される
>func() の返り値が関数オブジェクトではないのなら setTimeout は期待通りに動作しない
と言う事は
setTimeout(func(), 0);
function func(){
  ...
  return "string";
};
これはダメで、
function func(){
  return function(){ 
  ...
  return "string";
 }
};
これならOKと言う事ですか?

287 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 20:58:12.35 ID:uH1/jPAH.net]
>>276の説明は意味不明で混乱するだけだと思っていたがやっぱりだったかw

>>276は忘れたほうがいい。
意味不明だから。

288 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:22:43.29 ID:KqqGQ0oS.net]
>>282
仕様的には第1引数は関数または実行したいコードの文字列

setTimeout(func, delay)
だとfuncそのものをdelay後に実行

setTimeout(func(), delay)
だとfuncを即実行してその戻り値をdelay後に実行

ってことだと解釈してる


というわけで前者("string"をreturnしているほう)はエラーが出ると思う
stringってなんやねんって

289 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 21:38:07.82 ID:bghshKck.net]
>>280
それだけでは決められない。
例えばundefinedを直に扱わないようにhasOwn等を利用するスタイルにするとしたら、
他の部分でもそういう関数テスト型に揃えないとおかしい。
逆に言うとスタイルを揃えるのならどうだっていい。おかしくないように書け。

290 名前:デフォルトの名無しさん mailto:sage [2016/05/29(日) 22:36:23.66 ID:9WOIUBG7.net]
>>282
後者のコードで問題ないが、コールバックの返り値はどこにも返されない
もし、あなたがコールバック関数の返り値をどこかで受け取りたいのなら Promise のような仕組みを利用する事になる
関数の返り値が関数というロジックは同じ形式の関数を複数生成したり、関数スコープに値を閉じ込める場合に使われるわけだが、テクニックとして知っておくとコードの表現力が上がる

291 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 01:34:16.16 ID:Kp7czbyF.net]
>>280
>>285の言っているとおりで正しい。
加えて言うと、コーディング以前の段階でそれらは既に確定している。
逆に言えば、コーディング時に迷うようならそもそもそれがおかしい。(「設計」が出来ていない)
といっても多分君には通じないだろう。(その質問をすること自体がおかしい)
そこで平易に言い換えると、

その質問は、「車は右と左とどちらを走るのがいいの?」と等しい。
日本では「左」を走るように設計されているのだから、「左」なんだよ。
新車(新しい関数)をいくら導入しようが、「左」として設計されている場所では「左」なんだよ。
当たり前だが「右」として設計されている場所なら「右」になる。
「左」か「右」か選べるのは最初の「設計」時だけであって、基本それ以降は踏襲するしかない。
(コーディング時には決められているとおり記述するだけ)
変更するのは大手術が必要となる。


>>239
> 型の基本
>>285
> 揃えないとおかしい
レスをつまみ食いして悪いんだが、君達は何言語の出身?

前から思っているんだが、JavaScriptスレの連中は不思議なほど育っていない。
言語自体はいろんな事がお気楽に試せる面白い言語なので、普通にやっていれば普通に育つはず。
だからここまでヘボ揃いなのは確実に何かしらの理由があるはずで、
今ちょっと思っているのは、多分こいつらはダックタイピングに溺れているのではないかと。
具体的に言うと、 if (obj) がいいだ悪いだnullと比較すべきだいやundefinedも考えろとか永遠とやっているから
その先(データ/制御構造)に進めていないのではないかと思っている。
どうかね?

292 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 02:34:29.25 ID:ewV/OC7O.net]
どうかねってお前がその「育ってない」やつの一人だろ
みりゃわかるよw

293 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 05:24:03.84 ID:NXhb520V.net]
人間的に「育ってない」奴の多いこと多いこと。

294 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 08:05:58.62 ID:5tgErZe9.net]
永遠?
もしかして延々っていいたかったの?
バカゆとり丸出し



295 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 08:35:34.56 ID:yN0jSRJK.net]
>>287
> といっても多分君には通じないだろう。(その質問をすること自体がおかしい)
> そこで平易に言い換えると、
このスレでこの説明をしてくる奴よくいるが、平易に言い換えた説明が逆にわかりにくい場合がほとんど
物言いがいちいちくどくどしくて日本語力が足りてないというべきか
自分に酔った文章を書かず、簡潔に書け

296 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:30:20.73 ID:ewV/OC7O.net]
>>291
まずお前から実践しろよw

297 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:34:30.19 ID:gPEMgWAi.net]
>>249
知ったかぶってとか言ってるけど、最初からそう作ればいいだけだ
そういうのは設計や技術力が無いだけで手抜きとは言わん

298 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:36:25.96 ID:gPEMgWAi.net]
>>29

299 名前:0
僕が言いたかったのは永遠
[]
[ここ壊れてます]

300 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:41:35.60 ID:gPEMgWAi.net]
>>287
正直真逆の印象
今は構造化プログラミング世代の言語でもLinuxカーネルのような洗練さが求められてる時代
このスレでお前さんだけ20年ぐらい遅れてる

301 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:42:51.04 ID:PwZzpqig.net]
なるほど、node使いが、javascript(笑)と馬鹿にされる理由がわかったよ。今回は。
かつ、デザイナとしてもこいつらは害悪だしな。
放っておくと理由の伴わない感覚でのデザインしよる。
しかも、個人の「これは良くない」なんて感覚で。

302 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 09:45:48.62 ID:PwZzpqig.net]
undefinedの扱いundefinedの扱いってやかましいけど、そのデータに入っていない、が、そのデータに本当に入れていない、で何がいかんのかなぁ。
入ってもないデータに、「入っていなかった」って書くと、それは「入っていない事を確認した」データになってしまうんだけどね。

>>274
法律で決まってる話だったり、厚労省の保険適用のものの話しかしてないから、この範囲は業務知識ですらないよ。

303 名前:デフォルトの名無しさん [2016/05/30(月) 09:47:31.51 ID:gPEMgWAi.net]
ついに無差別マシンガン打ち始めたな
盲目的に従ってるだけの無能が何勘違いしてふんぞり返ってるんだ?

304 名前:デフォルトの名無しさん [2016/05/30(月) 10:06:14.30 ID:d3v2hj/G.net]
永遠に繰り返すならあるが永遠とやるなんて日本語ねえし



305 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 10:21:11.46 ID:SiNcM0fD.net]
なんかよくわからんけど、普通にforeachで処理できるようなデータ構造/Viewの実装仕様にしとけよと思った。

306 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:35:00.36 ID:REX8Pswd.net]
var obj = {'視力': 1.5, '聴力': '100db'};
なら Object.keys
var array = [{name: '視力', value: 1.5}, {name: '聴力', value: '100db'}];
なら Array.prototype 系関数を使う
未調査などのステータスが必要ならプロパティを付け加えるだけ
undefined を使う必要はないな

307 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:36:07.87 ID:XUi+aAng.net]
初心者なのですがオブジェクトxの何らかのプロパティを取り出す前にxがnullやundefinedでないことを確認する必要がありますよね?皆さんはどうしていますか?

308 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 12:36:56.29 ID:ysRBPLLz.net]
自演してまで続けたいのかこのゴミ

309 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 16:54:37.32 ID:PwZzpqig.net]
>>301
jsonっぽくすると
患者A:[{
 試験日:aaaaa ,
 シーケンス:bbbbb ,
 検査値:[
  {視力:{
   左右:右,
   近視度数:xxx,
   乱視軸:{値:yyy,単位:degree},
   乱視度数:zzz
  }}
  ,{カーブ:{
   ...
  }},
  {視力:{
   左右:左
   近視度数:zzz
  }}
 }
...
みたいなのかな。
       検査日..
氏名 左 近視度数
     乱視軸
     乱視度数
     カーブ
   右 ...
氏名 ....
みたいなグリッドに出すのに、無い場所の値を用意するだけで無駄。
定義されていない→無い、で充分。

310 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:20:40.14 ID:SiNcM0fD.net]
>>304
別に検査してなければ項目なしでもいいんだけど、描画するコードでループの一番内側がセルの数に
なるようなループして、いちいちundefinedかどうか判定するようなロジックにするの?

311 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 17:43:51.15 ID:/sRU0ua4.net]
乱視軸って何だ?

312 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:22:59.82 ID:ht1IyunN.net]
凄くタイムリーな質問だと思うんですが
var a = [];
a.last = function () {
 let len = this.length;
 return 0 < len ? this[len - 1] : null;
}
みたいな、範囲チェック外はnull返すようなことは不要ですか?
これは仕様としてnullが必要だからそうしてるのではなくて、
まぁせっかくチェックしたんだから返すとしたらnullだろうな、
くらいの判断でそうしてます。

それとも a.last = function () {return this[this.length - 1];} で十分ですか?
「javascriptは単にundefinedを返してくれるので範囲チェックしなくていい」
っていうふうにポジティブな解釈していいですか?

313 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:31:32.90 ID:hoOpO478.net]
>>307
nullを返すより0な

314 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:34:38.43 ID:SiNcM0fD.net]
>>307
a[undefined]のときa.lastがundefinedになるということと、自分がなにをしたくてなにを求めているのかを
勘案すれば、どう実装すべきか決定できるのでは



315 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:48:17.09 ID:ht1IyunN.net]
>>308
ありがとうございます。でもそれだと、
配列に整数を入れて使うとき悶絶しちゃうと思うんですがw
いや…それは結局nullのときでも一緒ですよね。
undefinedのときでも一緒ではありますね。
それらを代入できるという以上…。

>>309
ありがとうございます。
「a[undefined]のとき」っという表現が不勉強で分からなかったのですが、
いずれにせよ var value = a.last() のあとは単に
if (value) するくらいのことしか考えてませんのでundefinedで十分そうです。

316 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:53:42.83 ID:PwZzpqig.net]
>>305
ループの内側の数とか言うより、描画用の項目定義は項目定義である。
医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
それは医者次第だけど、内部的には
xpathみたいなもので指定する。
>>306
ごめん、軸度だな。
>>307
lastの用途次第だけど、popの仕様と合わせるならundefinedだと思う。
俺はpopしてundefinedじゃなければもう一回pushしておく。
そのためには、undefinedをpushしなくても良い実装にしておかなきゃならんけど。

317 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 18:59:41.70 ID:ht1IyunN.net]
>>311
ありがとうございます。popに合わせておこうと思います。
あとはせっかくなんで使う側はせめて if (a.last())
するよりは if (a.last() === void 0) としてみようかと。

318 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:12:01.08 ID:/sRU0ua4.net]
>>311
軸度とは

319 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:22:00.69 ID:PwZzpqig.net]
>>313
なんて言うか、正直眼科は不勉強だけど、乱視がどの方向にあるかだよ。
メガネ作るとき、放射状の線見せられて、どの方向が濃いか聞かれるじゃん。
あれを答えてもらった方向に90°足した、何度の方向に対して焦点がずれてるかが乱視軸度だよ。
普通は度で持つけど、たまにラジアンで持ってたりする。

320 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 19:42:49.89 ID:4aFguERh.net]
300すぎてまだやってんのかよ
頭おかC

321 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 20:20:03.03 ID:/sRU0ua4.net]
>>314
そんな事聞かれるのかよ
知らなかった

322 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:22:29.72 ID:PwZzpqig.net]
>>315
なんか話題提供してよ。

323 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 21:24:24.86 ID:PwZzpqig.net]
>>316
こういったふうに、ただの視力検査でも、人によってやらないものもあるんだよ。

324 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:02:14.89 ID:Kp7czbyF.net]
>>43
リクエスト無いみたいだし、もう無しで良いってことにさせてもらうぜ。
俺も大量にこのスレに書き込んだ。多分そちらにも多少は有効情報があっただろうし。
このスレは俺よりも20年先を行くスーパーハカーだらけらしいし、とりあえず引退してみよう。

>>312
多態しないのなら if (a.length>0) にしとけ

>>311
> 俺はpopしてundefinedじゃなければもう一回pushしておく。
おい!
ってかまじめな話、もうちょっと普通のやり方を覚えた方がいいぞ。
undefinedについて気になるのなら、他の知っている奴が回答するか、少し待つんだね。
それで出てこないようなら、俺のスレに聞きに来れば教えてやるよ。

とはいえ君は無駄



325 名前:ノ煽りすぎだ。だから出てこないかもしれない。
しかし、君は自力で辿り着けるレベルだから、ヒントを与えておこう。
君はNaNの仕様を知っている。で、それを便利に使っているわけだが、>>106
あれはそういう仕様が必要だったからなんだよ。
だからNaNの正しい使い方を調べて、そこから推測すれば、
undefined許容/非許容のそれぞれの得失を理解できる。
その上でundefined許容を選択するのなら、それは「設計」なんだよ。やればいい。

ところで、俺および俺が立てたスレがどうにも気に入らない奴がこのスレに複数いるだろ?
君達がやるべき事は、>>297に答えることだ。
そうしないと、俺のスレが流れ出しちゃうぜ?

あとついでだが、やはり君の案件は「正規」ではないよ。運用上「本番系」になっているだけだ。
読み出せないDBなんてあり得ないだろ?最初から何らかのビュワーが付いてる。
JavaScriptで受けるのなら、APIはJSON一択だろ?
今何かしら妙なAPIなのは、元々のビュワー用のAPIだからだよ。
そして何らかの理由で「正規」ビュワーが破棄され、今のビュワーになったんだよ。多分。
[]
[ここ壊れてます]

326 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:24:12.29 ID:ILfmqIwk.net]
俺の予想ではarraybuffer

327 名前:デフォルトの名無しさん mailto:sage [2016/05/30(月) 23:41:05.43 ID:Kp7czbyF.net]
>>320
APIのことか?
ビュワーはexeまたはelf等バイナリで、古い機材では動くが、新端末では動かないから、JS化したと。
あり得るシナリオだね。
だとすればParserでラップして終わりだし、鯖は当然そのまま運用するわな。
今のところの証言と状況証拠とは一致するw

328 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 00:15:08.11 ID:KJUuPgzh.net]
>>307
混乱を招く回答が追加されているので伝えるが、undefined を返す設計が妥当だと思う
例えば、Map.prototype.get は存在しないキーを検索したら undefined を返す
あなたが>>310で気が付いたように配列の値に undefined が代入されていれば、値があるのかないのか区別付かない
では、なぜ Map.prototype.get が undefined を返す設計になっているのかといえば、未定義のキーを参照したら未定義値を返す暗黙の了解があるからだろう
オブジェクトでも存在しないプロパティを参照すれば undefined を返す
(少なくとも俺の知る限りでは)プロパティが存在して undefined が代入されている JavaScript の仕様は存在しない
よって、あなたが配列のプロパティに undefined を代入しなければ十分に区別できるだろう
それから蛇足ではあるが、>>307のコードでは a === [,,,] な場合に意図せず、undefined を返す(>>307の設計通りなら null を返すのが正しい)
Object.prototype.hasOwnProperty を使うことで期待通りの結果を得ることができるだろう

Array.prototype.last = function last () {
 var i = this.length;
 while (i && !this.hasOwnProperty(--i));
 return this[i];
};
console.log([1,2,,,,].last()); // 2
console.log([,,,,].last());   // undefined
console.log([].last());     // undefine

329 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:17:08.26 ID:l5PlpRpu.net]
>>319
めんどくさいやつだなぁ。
煽りすぎた、って、煽られて沸騰した奴が言ったら二重どころか三重くらいにみっともないぞ。
煽って面白くなるだけ。

ビュワー用のAPIとか、だからさあ。。
電文だ、って言ってんじゃん。
電文、理解できない?知らないの?
>>320のほぼそのまま、今もう一回そこ書くならもうちょい綺麗にパーズするけど、要は[通信開始][要素種][要素長]....[チェックサム][通信終了]みたいなもの。
そのまま、要素種が始まったら要素長取り出して、その中も要素種と要素長で出来てるから、って形。
正規もなんもないよ。妙なAPIって、これハード屋的には何一つ妙じゃないよ。
案件ってか、自社製品だけど、運用 上の本番系、ってどんな寝言だよ。
運用してるなら、それは即ち本番系だろ。
おまえ学生なの?コードとして落とした事無いとか、無意味な理想論語ったりとか、結構痛いよ。

330 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 01:56:46.28 ID:C610iy1k.net]
>>323
あんさん2chフィルタ通して見ても尊大やし態度悪すぎやで
学生と比べて技術力高いわけでもなし、人を煽れる立場や無いやろ?

331 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 02:06:15.74 ID:C610iy1k.net]
ちな電文はバイナリ転送形式の事やないで
JSONだろうと1メッセージ単位なら電文や

332 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 03:10:34.97 ID:24hp8pmx.net]
>>323
お前、、、いちいち指摘するのが面倒なくらい色々読み間違ってるぞ、、、、
まあ俺の書き方もまずい点はあったが、、、

一応、俺は聞きに来れば答えるというスタンスだったんだ。
(出てこないってのは「他の知っている奴」のことであって、俺のことではないつもりだった。
ただこの点は俺の書き方が悪かった)
とはいえ、面倒だし、今回は他の連中も正解を知っていることが確定しているから、
天秤にかければ誰か答えるかと思ってな。
しかし、まあもう無理だと思うが。俺も面倒になってきたし。

学生の作品と企業製品では、検証レベルが全然違う。
undefined非許容というのは、まともに検証すれば自明なんだよ。だからみんな知っている。
逆にそれを知らないってのは、お前は検証してないって事なんだよ。
しかも医療系だろ?煽り抜きでヤバイと思うぞ。

> 電文
知らんよ。てかこれって一般用語か?ググッた限りはただの「パソコン」と同レベルの集合名詞だと思うが。
俺はWeb系ではないので、Web系のローカル用語は知らんよ。
XHRでArrayBufferなら最初からそう言ってくれたほうが良かった。
とはいえそこは本題ではないが。

>>324
おう、ありがとうよ。
俺は見ての通りこのスタンスだし、これくらいの粘着や煽りはいつも通りだ。
特段怒っているわけではないのだが、そう見えたのなら済まない。

というか、Web系の連中のこの自信はどこから来るのか、本当にかなり疑問だ。
お前ら、プログラミング一般からすると、かなり「ひよこ」だと思うぞ。
大口を叩くのは、10k行のコードを普通に取り扱えるようになってからにした方がいい。
そんな奴はこの界隈にはさらにいるのだから。

333 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:05:24.34 ID:l5PlpRpu.net]
>>324
わざとこの態度だからなぁ。
逆に、沸点低いやつがよくわかっていいじゃん。
沸点低いやつが何言っても、反射的に言ってるだけなんだし。
>>325
おう。JSONとして流れてきたらそりゃJSONという電文だな。
バイナリパスカル文字列式可変長電文か。

>>326
undefined許容というか、ずっと読み間違えてない?
データとしてundefinedを入れるわけではなくて、
解釈した結果そのフィールドには値が入っていない→それをオブジェクトに起こしても、そのプロパティ自体が設定されていない、だよ?
可能な限りの、「データは入ってませんでした」を設定して回るほうが現実的で無いよ。

俺、あとウェブ系じゃないからね。
基本はDB屋だよ。
DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。

334 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:19:18.21 ID:KJUuPgzh.net]
> DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
誰もそんなことは言ってなかったと思うが、何が許せないんだろうな
このスレだと hasOwnProperty, forEach, keys で判定する処理は見かけたが



335 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:20:08.42 ID:EjSYfMvt.net]
自演開始〜

336 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 09:40:27.01 ID:l5PlpRpu.net]
>>328
そりゃいいよ。それはそれで。
最初に初期値で初期化しとけば良いとか、そういうアホに対しての反論だから。

337 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:1 ]
[ここ壊れてます]

338 名前:6:07.42 ID:LdI3VN67.net mailto: >>327
> DBに入ってもない無い値を、入っていた事にされるのは許せんだけ。
outer joinやcross joinについてはどう思うのかね
[]
[ここ壊れてます]

339 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:17:56.42 ID:d9LvTqQR.net]
https://tpc.googlesyndication.com/simgad/16591006766826217033

これの答えは何なの?

340 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:21:15.79 ID:LdI3VN67.net]
>>311
> ループの内側の数とか言うより、描画用の項目定義は項目定義である。
> 医者が並べて見る時に、項目数が変わったり並び順が変わったら困るから。
> それは医者次第だけど、内部的には
> xpathみたいなもので指定する。
なかなか話が通じないが、要は表示項目数×人数のループをしてundefinedかどうかを
判定するということだろ?表示項目数が30で20人分表示なら600回の処理をする。

そうじゃなくて、存在するデータ側を元に表示するか、あるいは全く別のアプローチをすれば
いちいちundefinedかどうかなんて判定は不要ではとうこと。

341 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 10:37:22.17 ID:wxR5ZVVT.net]
>>331
無ければ困る事もわかるけど、凄く嫌い。
行列のDBは集合に対しての操作だと意識してないと最悪の結果に陥ると思うわ。

>>333
ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
提示してみてくれよ。
まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。

342 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 11:08:00.91 ID:LdI3VN67.net]
>>334
> ふむ、では、その冴えたアプローチで綺麗にしたデータを、行と列、ないしはグラフにレンダリングする術を
> 提示してみてくれよ。
> まさか、最初にレンダリング域全体のメモリを確保して、データ一つ一つに対して、RCや軸をデータから推測してその場所へデータを載せれば良い、最終的に残るのはundefinedだった項目だけ、とか考えてんのかな。
グラフという単語がでてきたので話が根本的にかみ合ってない気もするが、基本的にはそういうことだよ。

テーブルで表示することを考えれば、項目が決まれば行あるいは列が決まり、人が決まれば列あるいは
行が決まる。それをメモリ上のデータ構造として作成して一気にテーブル化するとか、DOMを直接書き
換えるとか、あるいは、テンプレートを使うか、データバインディングしてModelが自動的にViewに反映
されるようにするとか、やりようはいくらでもある。

グラフのメタファーで言えば、定義域:0〜100, 値域:0〜100のグラフがあるとき、(1, 3), (2, 5)という二つの
データしか無ければ二回プロットすれば終了ということだよ。

343 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:25:58.83 ID:wxR5ZVVT.net]
>>335
やりようはいくらでもある、な。
アホか。

データバインディングするにしても、いや、バインディングするならそれこそ、データは歯抜けでいいだろう。
データバインディングするってことは、ビュー側から、どの要素をとバインドすべきだし。

一気にメモリに載せてられるかww

344 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 12:33:55.20 ID:wxR5ZVVT.net]
しかし、何故undefined(というか、値が無いもの)とnullを別物と理解するのがこれほど彼にとって難しいのかわからんな。



345 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:25:23.48 ID:LdI3VN67.net]
>>336-337
なにか勘違いされてる気もするけど、歯抜けのデータが悪いとは一言も言ってないよ。
>>304みたいなデータが戻るケースはありがちだし。

で、俺が疑問に思ったのは、undefinedかどうかを判定する必要があるということは、
こんなコード書くの?ってこと。
display_items.each (function(display_item) {
  data.users.each (function(user) {
    // block A: ここがループの一番内側
    output('<td>' + user.hasOwnProperty(display_item) ? user.item_value : '' + '</td>');
  });
});
これだと、いつでもdisplay_items.count * data.users.count回のhasOwnProperty()が呼び出される。
display_items.count * data.users.count = 1,000のとき、表示するデータ数が1個だったときでも
1,000回の実行が必要。

そうじゃなくて、逆からのアプローチはできないのという疑問。
逆というのは、「存在するデータを元にする」やりかた。

346 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:26:54.24 ID:LdI3VN67.net]
君は君の問題を100%把握してるだろけど、俺(たち)は断片的な君の書き込み内容から
どのような問題なのかを想像することしかできないわけお。

>>336
> 一気にメモリに載せてられるかww
とか言われても、困惑するのみ。

347 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:49:49.08 ID:wxR5ZVVT.net]
>>339
できないなら、自分には理解できない事だと納得して無意味な提案やめて寝ればいいのにり

348 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 13:54:56.19 ID:LdI3VN67.net]
>>340
まぁ、ざっと読むと君の環境はこのスレ的には異端みたいだし、フロントエンドエンジニアでもないようだから
どうでもいいっちゃいいんだけどね。

349 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:14:48.43 ID:WCbBJW5L.net]
>>338
想像でしかないんだけど表示項目1に対してデータ項目がn(n>0)って可能性とか

たとえば視力検査の欄に表示する際
{"視力左":1.0,"視力右":1.0}の両方があって初めて表示するとか

{"視力左":1.0,"視力右":1.0}→「おっけー」って表示
{"視力左":1.0,"視力右":null}→「右目は測りきれない4.0とか超いいかも」って表示
{        "視力右":1.0}→「左目測ってない」って表示
{"視力左":1.0        }→「右目測ってない」って表示
{                }→「視力検査してないっぽい」って表示

350 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 14:29:29.32 ID:mikttA8+.net]
その例はちょっと良くないが、言いたいことはあっている。
undefinedはシステムからの処理上の値が無いですよという知らせ。
nullは誰かが明示的にそれを表明したもの。

351 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 15:57:03.36 ID:wxR5ZVVT.net]
>>342
あー、それ一番的を射てる。

352 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 18:51:35.17 ID:znL0FvMW.net]
jsやっている人はc、c++などのnullしかない言語ではundefinedが無いのはどうするのですか?困りますよね?

353 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 19:40:15.04 ID:e360ttrJ.net]
undefinedを値として使ってるバカなんて知るかよ
大多数の人間はnull返せハゲって思ってるっての

354 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:00:07.25 ID:JD+3IcFi.net]
>>322
ありがとうございます。

ちょっと本題から逸れるんですが、[,,,] の中身が新鮮ですね。
lengthは3で、キーは何も無いと言う。
一見、{0:undefined, 1:undefined, 2:undefined, length:3}
こういう中身になってていいじゃないかと思うんですがそうはしないんですね。
いや、まぁどうでもいいんですが。

あ、次にpush('foo')しときにlength見て{3:'foo', length:4}になるから嬉しいのか。
lengthだけ持ってても十分なのか。なるほどなるほど。



355 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 20:32:52.55 ID:wxR5ZVVT.net]
>>345
nullしかない言語は、dbNullを扱えるようになってるような。

356 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:33:17.75 ID:C610iy1k.net]
>>344
末端に判定ロジック大量に積んでるのか
ウンコですね

357 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 22:51:11.93 ID:ZB9BdGtV.net]
>>345
そういった言語では例えば存在しないプロパティにアクセスすると例外となるので必要性が薄い。
JSがスクリプト言語だからこそ映える設計。

>>347
ぶっちゃけ歯抜けはよほどの場面じゃないと推奨しない。
言語エンジンの最適化試行ぶち壊しで気持ち悪い。
あと、Array.prototype.lastなんて夢でも死んでも使わないように。
その機能の標準化が一番危うくてデリケートで予測が付かない段階にきてる。
今最もprototype下に自作してはならない機能の1つ。

358 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:04:26.90 ID:VEM8svzW.net]
>>347
> lengthは3で、キーは何も無いと言う。
[,,,] は Array.prototype 系と for 文で走査プロパティが異なるので注意が必要だ
Array.prototype.forEach はプロパティが存在する値のみを走査する為、[,,] では何も走査しない

[,,,].forEach(function (value) { console.log(value); }); // コンソールに何も出力しない
[undefined,undefined,undefined].forEach(function (value) { console.log(value); }); // undefined を3回出力する

少し、話がそれるが、プロパティの存在する値にだけ処理を行うというのは重要なことだ
>>342の例でいえば、次のように書けるだろう
https://jsfiddle.net/b1x6nohm/
対象プロパティが String 型なので falsy な値として '' を使用している
null を使うのなら対象が Object 型である必要がある

359 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:13:56.84 ID:C610iy1k.net]
これもう議論にならんやろ
本人以外は皆仕様知っててこの態度なんやし

360 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:17:06.49 ID:VEM8svzW.net]
>>347
>>307でprototype拡張されていなかったのでいわなくても伝わるだろうと思って伏せていたが、Array.prototype.last はあくまでも便宜上のサンプルねので念のため
Array.prototype 拡張は将来的に同名プロパティが定義されたときに互換性が崩れるのでお勧めしない
静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう
何らかの理由でどうしても定義したいのなら一昔前のfor-inによる汚染問題を解消するために Object.defineProperty を使うべきだ
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, function last () {}});

361 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:19:21.13 ID:VEM8svzW.net]
>>353は SyntaxError だったので訂正
Object.defineProperty(Array.prototype, 'last', {writable: true, enumerable: false, configurable: true, value: function last () {}});

362 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:20:01.54 ID:wxR5ZVVT.net]
まぁ、何度、経験ないだろ、なんて煽ってもそこだけ返事がないところみると、
「本人以外は全員わかってる」んだろうけど、笑えるわ。

363 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:38:40.59 ID:24hp8pmx.net]
>>327
お前はいつか事故るぞ。投薬履歴だって表示が間違っていれば死人が出るんだ。
Web系の「リロードすれば万事おk」のノリでは駄目なんだ。お前はそれですらないが。

ただ、検証を手抜きすれば単価はいくらでも落とせるわけで、このように、
一通りの知識すらない馬鹿を雇って一通りの検証すらせずに出荷する悪徳業者をどうするかは
今後の課題になるのだろうね。
契約上、ソフトウェアのバグについては責任追及できないようになっているのだろうけど、
これまでソフトウェア産業が培ってきた常識すら知らない奴がコーディングし、
まともな検証すらせずに出荷するというのは、業務上過失致死/偽計業務妨害に問われるべきだ。
AS IS WARRANTY を完全に悪用している。

とはいえ、普通に考えればこういう悪徳業者はいつか出てくるわけで、不思議ではない展開だ。
死人が出てこの構造が判明してからでないと、行政は動かない。
願わくば、お前がその最初の犠牲者となり、自業自得を以て業界の浄化に貢献してくれ。

というわけで君には「人殺し君」というあだ名をあげよう。
多分君は既に人を殺しているか、今後人を殺す。
無知も罪なのだよ、業界によっては。

それはさておき、ここに来て気づいたが、 AS IS WARRANTY って性善説ベースだったんだな。
こりゃ性悪説ベースの何かを導入しないと駄目だ。
とはいえ資格なんて糞の役にも立たない業界だし、なかなか難しい。
調べた限りではPL法も適用外だし、悪徳業者はやりたい放題だ。
(ただここまで来るとマ板の話題でスレチだが)

話を聞いている限りこいつは鯖屋で、ソフトウェアの知識は一切無い。
フリーソフト等を組み合わせれば悪徳零細学生レベルでも見目麗しいシステム()を構築でき、
素人を騙せる時代になった。そしてそれがすべて自分の能力で出来たものだと勘違いしている。
(組み合わせる能力はあるが、使われているソフトを記述する能力は無いことに気付いていない)
とはいえ、現実問題として、これを顧客に見抜けというのは不可能だろう。
なんだかなあ。

364 名前:NAS6 ◆n3AmnVhjwc [2016/05/31(火) 23:43:38.27 ID:ZnwkUC0d.net]
ttp://nas6.main.jp/htm000.htm
x3domのサンプル集とライブラリ
完璧な2/3D行列計算ライブラリに仕上がりました

x3domは簡単でいいよ
ポリゴンテスト&ライブラリヘルプ.htmでも見てください
完璧に計算されています^^



365 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:44:24.50 ID:+fB1tt6W.net]
> 静的関数や独自オブジェクトによる拡張で代用するのが妥当だろう

そうやって作られたのがUnderscore(lodash)というライブラリで
わざわざ作らずとも、 _.last([1,2,3]) で取得できるんだよ。

366 名前:デフォルトの名無しさん mailto:sage [2016/05/31(火) 23:50:20.60 ID:C610iy1k.net]
>>355
RASISすら守っとらんみたいやし
RDB使ってる現場やけど、そんな場当たり的な実装の経験ないで
普通はリクエスト間違ったら全部エラーやしfail safe前提や
あんさんが無知すぎるんやで?

367 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:02:09.20 ID:J/AVgXyA.net]
DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ
なんでそんな無理して知ったかぶるんやろ

368 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:03:48.85 ID:XVpspPb0.net]
>>357
行列のライブラリはどれが有名か知らんけど、
このglMatrix.jsはスター多くていいんじゃないかな?

https://spphire9.wordpress.com/2011/04/05/javascript%E3%81%AE%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%80%81%E8%A1%8C%E5%88%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA/

> 前に調べたときは全然見つからなかったけど、WebGL関係で調べていたら結構見つかったのでメモ。
>
> glMatrix.js
> https://github.com/toji/gl-matrix
> glmatrix.net/
> webgl-mjs code.google.com/p/webgl-mjs/
> Sylvester sylvester.jcoglan.com/
> CanvasMatrix.js khronosのWebGLのチュートリアルで使っているがどこでダウンロードできるのか分からなかった
> glMatrix.jsがシンプルなのでオススメ。
>
> 2014/01/19追記
> glMatrixの公式サイトができてた。

369 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:04:59.00 ID:XVpspPb0.net]
>>360
> DB屋ならjoinできないようなデータ構造の時点で問題あると気づくやろ

どういうこと?
nullがあるとjoin出来ないとかそういう話?
なわけないよな。left joinとかあるわけだし。

370 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:11:15.87 ID:XVpspPb0.net]
あとすべての項目をjoinに使うわけでもないし。

371 名前:NAS6 ◆n3AmnVhjwc [2016/06/01(水) 00:18:19.22 ID:CPNT1MjH.net]
>>361
ライブラリを作る前に探したけど
回転行列←→回転ベクトル、回転行列←→四元数
この相互変換を扱ってるのは見当たらなかったよ

372 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:19:48.60 ID:XVpspPb0.net]
>>364
興味ない。

373 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:20:56.87 ID:XVpspPb0.net]
>>364
もう少し丁寧に言うね。
githubで公開してもいないようなものを使う気にはならない。

374 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:21:24.97 ID:iqAUu6wp.net]
>>360
>>342なんだけど挙げたデータ構造は
あくまで俺がてきとーに想像しただけなので
それで誤解与えてしまってたらごめん



375 名前:デフォルトの名無しさん mailto:sage [2016/06/01(水) 00:42:46.14 ID:JLTaiLCk.net]
>>359-360
多分そちらも気づいていると思うけど、人殺し君には「信頼性を上げる」という感覚がないんだ。
だから俺たちが何を問題視しているのか、全く

376 名前:通じていない。

ただ、当たり前のように信頼性を上げようと努力してきた側からすると、
業界全体が悪徳業者に対して全く無防備だったってのが結構ショックなんだよね、、、
というかよくこれまでこれで回ってたなと。
[]
[ここ壊れてます]






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<397KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef