JavaScriptについて質問です。 二つの引数(配列と整数)をとり、合計が引数の整数と同じになる配列の中の二つの数字の中で最も「早い」組み合わせを見つける関数を作成せよ、という課題がありました。

JavaScriptについて質問です。 二つの引数(配列と整数)をとり、合計が引数の整数と同じになる配列の中の二つの数字の中で最も「早い」組み合わせを見つける関数を作成せよ、という課題がありました。 例) sum_pairs([4, 3, 2, 3, 4], 6) # ^-----^ 4 + 2 = 6, indices: 0, 2 * # ^-----^ 3 + 3 = 6, indices: 1, # ^-----^ 2 + 4 = 6, indices: 2, 4 # * entire pair is earlier, and therefore is the correct answer == [4, 2] 模範解答が二つあって、 1: var sum_pairs=function(ints, s){ var seen = {} for (var i = 0; i < ints.length; ++i) { if (seen[s - ints[i]]) return [s - ints[i], ints[i]]; seen[ints[i]] = true } } 2: let sum_pairs= (a, s) => { let mem = {}; for(x of a) if(mem[s - x]) return [s - x, x]; else mem[x] = 1; } です。 何度読み返しても理解できません。。。 どなたかご教授してくださるかたはおりませんか? よろしくおねがいします。

JavaScript46閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

このベストアンサーは投票で選ばれました

0

これだけ短いコードでじっくり読んでも意味が分からないということは、 行単位で理解できない部分があるということですか? もしそうならばその分からない構文を1つ1つ調べて使って練習して理解してください その後、頭の中に全ての変数を置いて1行ずつ実行してみてください それが難しいようであればデバッガのステップ実行を使うと良いです