- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
66 :ID:KQiec6kq (連続書き込み規制対策で変更)[sage]:2015/08/12(水) 20:55:24.34 ID:S25mloU+ - >>60
lodashにmapValuesあるやん・・・ https://lodash.com/docs#mapValues なんで俺気づかんかったんや・・・
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
67 :デフォルトの名無しさん[sage]:2015/08/12(水) 20:59:28.34 ID:S25mloU+ - あ、残念。再帰ではなかった。工夫すれば使えるけど。
_.mapValues({"a":1, "b": 2, "c": {"d":4}}, n => n*3) { a: 3, b: 6, c: NaN }
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
69 :デフォルトの名無しさん[sage]:2015/08/12(水) 21:12:50.83 ID:S25mloU+ - >>68
ありがとう。 こういう原始的に近い処理をする関数は いい英単語が中々思いつかんから困る。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
72 :デフォルトの名無しさん[sage]:2015/08/12(水) 22:24:59.02 ID:S25mloU+ - データそのものがツリー構造をしているようなものは
データそのものが再帰であるのだから それを扱うコードも再帰を使ったほうがわかりやすい。 だけどデータがリスト構造なだけなら 普通にループを使ったほうがわかりやすい。 適切に選ぶべきだ。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
77 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:16:15.63 ID:S25mloU+ - >>75
それは何の反論にもなってない。 リストはツリー構造のサブセット。 ツリー構造の柔軟性の一部を禁止してシンプルにしたもの。 そのシンプルなデータ構造に対してはシンプルな処理を 使ったほうがわかりやすくなるのは当たり前。 再帰よりもループのほうが単純なことしか出来ないが、 単純なことしか出来ないから、余計なことを考える必要がなくなる。 シンプルな構造にも複雑な構造にも複雑な構造用の道具を使うのではなく シンプルな構造にはシンプルな構造用の道具、 複雑な構造には複雑な構造用の道具を使うことが、 適切に道具を選ぶということ。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
79 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:18:07.58 ID:S25mloU+ - >>78
よくわからないので、ループで書いてくださいw
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
81 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:20:08.29 ID:S25mloU+ - >>80
え?append? なんでオーダーなんか出てきてんの? 今までそんな話全くしてない。 話がずれてるね。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
83 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:21:38.26 ID:S25mloU+ - >>82
そうだよ? 高階関数を使ったほうがもっと良い。 高階関数の話は上の方でしている。 ただ再帰を使って書く必要ねーなって話。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
86 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:24:48.52 ID:S25mloU+ - > リストの長さは空だったら0 空じゃなかったらtailの長さに+1したもの
つまり、それ何をやってるの? 日本語で、一言で言うと・・・?
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
89 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:25:50.72 ID:S25mloU+ - >>85
苦笑w 話の内容はわかってる。 そんな話は俺はしてないといってる。 わかってるから、俺はしてないといえるわけだよ。 OK?
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
94 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:31:51.38 ID:S25mloU+ - >>91
> どうぞmapをループでお書きくださいな これでいい? function map(list, callback) { let ret = []; for(item of list) { ret.push(callback(item)); } return ret; }
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
97 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:35:11.79 ID:S25mloU+ - >>93
「リストの長さ」っていうより 「空だったら0 空じゃなかったらtailの長さに+1したもの」っていう方が 日本語の言葉として明らかに長いよね?
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
100 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:36:36.85 ID:S25mloU+ - >>96
> レスを読む限り、mapのがよく問題を分離できるし並列もできるから > ループの方がよっぽど要らないような mapとループの話じゃなくて、 ループと再帰の話で、再帰使うまでもない所で 再帰使う必要ないよって話をしてるんだよ。 要らないとは誰も行ってない。 シンプルな道具を適切に使いましょう。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
102 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:38:19.63 ID:S25mloU+ - >>99
> mapをmapで定義してくださってどうもありがとうございます どこがmap? for...of ループの話? ほれ、for...of ループ の説明 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...of
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
104 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:39:27.31 ID:S25mloU+ - for...ofループを使ってダメなら、
function map(list, callback) { let ret = []; for(let i = 0; i < list.length; i++) { ret.push(callback(list[i])); } return ret; } って書くだけだけどね。
|
- なあ、再帰関数好きな人いる? [転載禁止]©2ch.net
107 :デフォルトの名無しさん[sage]:2015/08/12(水) 23:42:37.68 ID:S25mloU+ - >>105
「要らない」の理由がおかしいんだよ。 再帰でループが実現できるのは知ってる。 君は、大は小を兼ねる理論で、 大があれば小はいらないという考え方だろうけど、 俺は大には大を、小には小を使った方が いい(わかりやすい)と言ってるわけ。
|