のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,598,360人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
601 : Name_Not - 2018/05/22(火) 09:08:41.33 ID:???.net (+36,-29,-83)
いずれにしても、見た目上は左が前で右が後だけど、ここでいわれる「前」と「後」は 前(previousSibling) と後(nextSibling)?
DOMノードレベルとブラウザに描画されるレベルでは、前後の定義が変わるのでは?
602 : Name_Not - 2018/05/22(火) 10:44:30.80 ID:???.net (+34,+6,-5)
RtoLで2要素跨いでる場合はどういう順番になるんだろう
603 : Name_Not - 2018/05/22(火) 13:28:48.90 ID:???.net (+62,+29,-7)
>>601
なに言ってるんだ? 先に現れたのが前だろ
604 : Name_Not - 2018/05/22(火) 13:35:57.83 ID:???.net (+37,+19,-4)
先って?
605 : Name_Not - 2018/05/22(火) 14:05:37.24 ID:???.net (+37,+14,-3)
メモリアドレスの小さい順だが?
606 : Name_Not - 2018/05/22(火) 19:04:47.97 ID:???.net (+57,+29,-18)
ファイルにしろDOMにしろ本質的にはシーケンシャルなのですよね
607 : Name_Not - 2018/05/23(水) 03:23:27.09 ID:???.net (-12,-30,-40)
チェーンの数を動的に変更したいのですがどうすればいいでしょうか。
func(){
hoge.a().a().a().a();
}

このa()をfunc(1)のときは1回で実行結果が
hoge.a();

func(2)のときは3回で実行結果が
hoge.a().a().a();

みたいにやりたいのです
608 : Name_Not - 2018/05/23(水) 03:25:33.12 ID:???.net (-2,-30,-23)
もちろん
func(n){
switch(n){}
}
的なのは考えましたが
例えばnが大きくなると大変になりそうなので
609 : Name_Not - 2018/05/23(水) 03:26:21.53 ID:???.net (-1,-29,-8)
訂正>>607
>func(2)のときは
func(3)のときは

でした
610 : Name_Not - 2018/05/23(水) 03:55:47.58 ID:???.net (+52,+29,-17)
再帰でなんとかするほうが良くね
611 : Name_Not - 2018/05/23(水) 05:46:05.97 ID:???.net (+4,-30,-14)
>>607
単純なループで良い
難しく考える必要はない

func(n){
 var o = hoge;
 for (var i = 0; i < n; i++) {
  o = o.a();
 }
 return o;
}
612 : Name_Not - 2018/05/23(水) 06:41:36.97 ID:???.net (+323,-30,-38)
難しく考える必要はない
せっかくJSを使ってるのだからこれでいい
eval( 'o'+'.a()'.repeat(n) )
613 : Name_Not - 2018/05/23(水) 07:44:19.05 ID:???.net (-2,-30,-28)
難しく考える必要はない
単純にreduceでいい

func(n) {
Array(n).fill().reduce(acc => acc.a(), o);
}
614 : Name_Not - 2018/05/23(水) 08:00:17.68 ID:???.net (+181,-30,-30)
いろいろ間違えた

function func(n) {
Array(n).fill().reduce(acc => acc.a(), hoge);
}
615 : Name_Not - 2018/05/23(水) 09:59:42.66 ID:???.net (+7,-30,-38)
でもreduceってIE9からしか使えないしな。
fillとか存在の意味が分からんし

そんなに一行で書きたいなら

func(n){
 for (var i = 0, o = hoge; i < n; i++) o = o.a()
}
616 : Name_Not - 2018/05/23(水) 10:00:58.23 ID:???.net (-2,-30,-22)
func(n){
 var o = hoge, while (n--) o = o.a();
}
617 : Name_Not - 2018/05/23(水) 10:41:20.18 ID:???.net (+57,+29,-5)
そんなこと言ってもIE9なんてもはや気にしてないし。
サポート切れて喜んでたじゃんお前ら。
618 : Name_Not - 2018/05/23(水) 10:44:54.81 ID:???.net (+26,-30,-31)
fillが嫌ならこんなのでもいいぞ。

function func(n) {
[...'.'.repeat(n)].reduce(acc => acc.a(), hoge);
}
619 : Name_Not - 2018/05/23(水) 11:07:15.87 ID:???.net (+38,+10,-13)
またbabelをつかわないといけないようなコードを
620 : Name_Not - 2018/05/23(水) 11:54:18.14 ID:???.net (-3,-26,-1)
またIE9おじさんか
621 : Name_Not - 2018/05/23(水) 13:16:49.98 ID:???.net (-2,-30,-15)
hoge.b = function(n){
for(var i = 0; i < n; i++){
this.a();
}
return this;
};
?
622 : Name_Not - 2018/05/23(水) 13:24:02.79 ID:???.net (+50,+24,-14)
>>618
ドット好き過ぎwww
623 : Name_Not - 2018/05/23(水) 13:24:51.85 ID:???.net (+130,+18,-12)
>>614
単純とはいえない
reduce使いたいが為に配列をわざわざ生成して、生成した配列を捨ててる
624 : Name_Not - 2018/05/23(水) 13:28:22.51 ID:???.net (+0,-29,-9)
>>615
MSは既にIE10以下を切り捨ててるけど、あなたのサポート対象はどこまで?
625 : Name_Not - 2018/05/23(水) 13:29:46.91 ID:???.net (+180,+29,-6)
>>623
>>612は良いのか?ダブスタじゃん?
626 : Name_Not - 2018/05/23(水) 13:40:34.36 ID:???.net (+71,+29,-12)
>>625
>>612は生成した文字列を捨てずに活用してるから、なくはないんじゃないかな
Function() の方がいいとは思うけど

どこがダブルスタンダード?
627 : Name_Not - 2018/05/23(水) 15:33:43.75 ID:???.net (+94,+29,-10)
ハァ?じゃあ配列も活用してるだろうが…
ちょっと考えておかしいと思わんかな
628 : Name_Not - 2018/05/23(水) 16:28:17.99 ID:???.net (-1,-29,-32)
Rangeの端を指す用語は何でしょうか?
isPointInRangeのようなメソッド名があるのでポイントでいいでしょうか?
629 : Name_Not - 2018/05/23(水) 19:23:02.55 ID:???.net (+83,+30,-93)
>>627
配列は繰り返し処理だけの為に生成されていて、「値」が使われてない
n回繰り返すために配列を生成するのは無駄、単純ではない
>>612は文字列を引数にしなければならないのだから、これ以上は省略しようがない

それから、「言及してない=許容」という考え方もおかしい
一つ指摘したら、全レスをチェックして、スルーしたレスは許容するのが当然なのか?
逆にいえば、あなたは>>612以外は認めてると?
630 : Name_Not - 2018/05/23(水) 19:30:24.54 ID:???.net (+57,+29,-26)
無駄がどうのと言ってるわりにevalはいいの?基準がよくわからんな
631 : Name_Not - 2018/05/23(水) 19:41:34.25 ID:???.net (+103,+29,-110)
reduceでn回繰り返すために配列を生成するのは無駄、単純ではない

forでn回繰り返すために一時変数を生成するのは無駄ではない、単純

主観じゃん。forに慣れてるだけ。

たしかに無駄になるコストはforのための一時変数の方が配列より低いと思うよ。
でもそのわりにevalは認めちゃってるし…
基準がさっぱり分からない。
メモリリソースなのか、
CPUリソースなのか、
はたまたコードの見た目(単純に見える)なのか?
一番目と二番目は数字で語れるだろうけど、三番目なら主観だよ。
あなたがforに慣れてるだけ。
関数型言語の人に聞いたら違う答えが帰ってくるんじゃないかな。
632 : Name_Not - 2018/05/23(水) 20:11:41.21 ID:???.net (+63,+29,-50)
正直ここまで不格好でない例が無い
ひょっとしたらeval例が一番なくらい
でもやろうとしていることが不格好だから仕方ないとも思う
やっぱりメソッド中で必要な処理だけforで回したり再起にするのが良いと思う
633 : Name_Not - 2018/05/23(水) 20:24:18.46 ID:???.net (+57,+29,-26)
不格好ってことは三番目の「コードの見た目」だったようだね。主観。
634 : Name_Not - 2018/05/23(水) 20:58:45.37 ID:???.net (+63,+30,-117)
多分それは悪い意味で言ってるんだと思うが
主観的見た目こそ超絶大切なことだと考えてる勢には通じないと思うぞ

今回の例みたいなのは動くだけなら猿でも書けるんだから
でも自由な文化のJSではどの方法が適当なのかなんて自明ではない
でもだからこそ、ロジック以外の部分で拘って研究して論争する価値があるんだと思うよ

そうして可能性を捨てずに色々試して皆で議論して良くしていこうっていうのがWebだから
635 : Name_Not - 2018/05/23(水) 21:38:25.82 ID:???.net (+57,+29,-29)
不恰好を定義できない、不恰好でない例も出せない無能はほっとけ

しいていえば見た目は読みやすさ・理解しやすさに繋がるか?
636 : Name_Not - 2018/05/23(水) 21:50:06.14 ID:???.net (+16,-1,-1)
自演ワロタwww
637 : Name_Not - 2018/05/24(木) 00:21:59.91 ID:???.net (+52,+29,-16)
あたま湧いてるのか?
638 : Name_Not - 2018/05/24(木) 00:26:16.72 ID:???.net (-1,-29,+0)
 彡⌒ミ
(´・ω・`) また髪の話する・・・?
639 : Name_Not - 2018/05/24(木) 00:34:23.64 ID:???.net (+76,+30,-33)
>>631
>>625のダブスタも相当主観だと思ったが、どういう意味だったんだ?
640 : Name_Not - 2018/05/24(木) 00:44:50.20 ID:???.net (+45,+22,-10)
で、どれが一番早いの?
641 : Name_Not - 2018/05/24(木) 00:51:08.88 ID:???.net (+23,-29,-231)
>>631
reduceは配列の要素から一つの値を作るものだと考えている
要素を使わず、代入処理だけのためにreduceを使うのであれば、始めから代入処理だけの機能を使うのが理にかなっている

後な、俺が主張してるのは単純か複雑か
reduceを使うためにArray()で配列を生成し、走査可能にする為にする為にfill()で値を初期化、という理屈を初心者が理解できるとは思えん

対するeval()は善し悪しはともかく、機能理解はreduceよりも容易だと思うね
個人的にはevalを全く使わんし、eval is evil、eval <<< Function
ローカル変数破壊は御法度だし、式呼び出ししなければ安全でないのは頂けないが、それは別の問題だ
evalがコードを実行できる関数ぐらいの理解は初心者にも出来る
642 : 623 - 2018/05/24(木) 01:01:04.14 ID:???.net (+100,+30,-133)
ついでだからいうが、>>623では言及していなかった>>612を引き合いに出して、ダブスタといわれても困る(>>625)
なぜか俺が>612が良い」と主張しているように誤解されているが、そんなことは一言もいってない
たまたま、>612が俺のいう「単純とはいえない」に該当しなかったから弁明する形になっているが、本意ではない
同様に、俺が言及しなかった他のレスも「良い」と主張しているわけではない(言及しなかったものを勝手に決めつけられても困る)
643 : Name_Not - 2018/05/24(木) 05:39:56.28 ID:???.net (+117,-25,-59)
>>641
> reduceは配列の要素から一つの値を作るものだと考えている
それも使い方の一つだが、
オブジェクトを渡して、そのオブジェクトのメソッドを
複数回メソッドを呼び出すためにも使う
644 : Name_Not - 2018/05/24(木) 06:21:47.69 ID:???.net (+57,+29,-22)
つまるところ、
歯ブラシは、俺の尻に突っ込むためにも使う
ということである
645 : Name_Not - 2018/05/24(木) 07:08:33.91 ID:???.net (+57,+29,-40)
eval を使うと、納品できない

そこからシステムに侵入されるから、損害賠償請求される。
危険なことを知っていて、使っているから
646 : Name_Not - 2018/05/24(木) 07:11:09.43 ID:???.net (+62,+29,-4)
>>643
ずいぶん、限定的な使い方だな
647 : Name_Not - 2018/05/24(木) 07:29:41.51 ID:???.net (+69,-30,-22)
>>643
reduce使う必要ないのでは?

let i = 4;
while (i--) obj.a();
648 : Name_Not - 2018/05/24(木) 07:33:39.28 ID:???.net (+57,+29,-26)
evalって書いたのはどう見てもネタでしょ
649 : Name_Not - 2018/05/24(木) 07:42:21.61 ID:???.net (+57,+29,-5)
システムに侵入てお前のカツラシステムか何かか
650 : Name_Not - 2018/05/24(木) 07:51:46.41 ID:???.net (+52,+20,-4)
>>647
それをreduceでやるのがカッコイイんですよw
素人には読めない。プロだけがわかるコード
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について