質問: javascript 配列の問題について。 function compareFunction(a, b) { if (a < b) { return -1; } if (a > b) { return 1; } return 0; } function largestinArray(ary, n) { // nがaryの中で何番目に小さな値であるかを数える return; } 関数の引数に,配列aryと整数nが与えられます。 配列aryには,整数nを含むいくつかの整数が格納されています。 関数の返り値に,整数nがaryの中で何番目に小さい要素かを返すにはどうしたらよいのでしょうか? //とreturn;の部分の記述が分かりません。 どなたか教えていただけると嬉しいです。 以下誤答 function compareFunction(a, b) { if (a < b) { return -1; } if (a > b) { return 1; } return 0; } function largestinArray(ary, n) { var ary1=ary.sort(compareFunction); ary1.indexOf(n+1); return ary1; }
回答: function largestinArray(ary, n) { let ary1=ary.sort(compareFunction); return ary1.indexOf(n) + 1; } 誤答の書き方をできるだけ維持するならこうじゃない? 昇順ソートした配列ary1を生成 ary1から一番前のnの格納番地を見つけて、1を加えた値を返す。 1を加えるのは、配列はゼロから数えるので、格納番地より1つ大きい値が何番目に小さい値かになる。 なお、nが存在しなかった場合は、0がこの関数の戻り値になる。