ハンバーガーメニュー

Menu

← Quiz 一覧に戻る

Array.prototype.toSorted() - JavaScript | MDN

Array.prototype.toSorted() が配列だけでなく「配列ライクなオブジェクト」に対しても動作するとき、this に length プロパティが必要とされる理由を、処理の流れを意識して説明してください。

🟡 応用⭐ Familiar2回出題済み記事を読む →

模範解答

toSorted() はまず this の length プロパティを参照し、その長さに従って要素を読み込み、内部でコピーしたデータをソートします。そのため、length がないとどれだけの要素を対象にすべきか判定できず、配列ライクとしての前提が崩れるので、length プロパティが必要とされています。

🔑 toSorted() が length に基づいて要素数を決定し、配列ライクなオブジェクトとして処理する前提を理解しているか。


回答履歴 (2回)

#2   2026.03.08正解 (4/5)

あなたの回答

toSortedの流れとして、キーが0から順番に要素を検査していくので、lengthが無いとキーのゴールが分からなくなってしまう。 lengthで要素数が分かれば、0からその値までを順番に見ていくだけで良い。オブジェクトでも、キーが0から5で、lengthプロパティに6が入っていれば動くことになるはず

フィードバック

toSorted はまず this.length を読み取り、その値をもとに 0 から length-1 までのインデックスを要素として扱います。ユーザーの回答は「length がないとどこまで走査すべきかわからない」という点を正しく押さえています。また、配列ライクなオブジェクトが 0 から始まる連番キーと length を持てば動作する、という理解も概ね正しいです。仕様的には「length に基づいてコピー・ソートの対象範囲を決める」という点を明示できると、より完全な説明になります。

#1   2026.03.16正解 (5/5)

あなたの回答

lengthが無いとsortのイテレーション数が判定できないため。 toSortedは、実際の配列の要素数を数えるのではなく、lengthプロパティの値を取得して0からその数-1までをインデックスアクセスで探索する。その探索結果の要素を並び替えた配列を返すので、lengthが無いオブジェクトには適用できない

フィードバック

ユーザーの回答は、toSorted が length プロパティに基づいて 0 から length-1 までインデックスアクセスを行い、その結果を並び替えて返すという処理の流れを正しく説明できています。また、length がないとイテレーション範囲を決められないため配列ライクとして扱えない、という点も模範解答と整合的です。模範解答にある「配列ライクとしての前提が崩れる」という表現を補えば、より仕様意図が明確になりますが、内容としては十分正確です。