この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
88. JavaScriptでnegative indexをサポートする
解答例:
function wrap(arr) { return new Proxy(arr, { get(target, prop) { // coerce prop to number to check if it's a negative index const index = Number(prop); if (index >= 0) { // positive index, return value from original array return target[index]; } else { // negative index, adjust to positive index and return value from original array return target[target.length + index]; } }, set(target, prop, value) { // coerce prop to number to check if it's a negative index const index = Number(prop); if (index >= 0) { // positive index, set value in original array target[index] = value; } else { // negative index, adjust to positive index and set value in original array target[target.length + index] = value; } // always return true to indicate successful set operation return true; } });}
この実装では、Proxy
を使用することで、オリジナルの配列に対して直接アクセスでき、これによりすべての操作が反映されます。get
メソッドは、プロパティを取得する場合に呼び出されます。プロパティが負のインデックスである場合、インデックスを適切に調整してオリジナルの配列から値を取得します。set
メソッドは、プロパティに値を設定する場合に呼び出されます。同様に、負のインデックスである場合には、正のインデックスに適切に変換してオリジナルの配列に値を設定します。
注意:このコードは、完全ではなく、負のインデックスを使用した場合に発生する可能性がある問題をカバーしていません。もし同条件を考慮したい場合、さらに複雑な実装が必要になるでしょう。