Array.prototype.myAt = function (index) {
const length = this.length >>> 0;
const numericIndex = Number(index);
let integerIndex;
if (Number.isNaN(numericIndex) || numericIndex === 0) {
integerIndex = 0;
} else if (!Number.isFinite(numericIndex)) {
integerIndex = numericIndex;
} else {
integerIndex = numericIndex < 0 ? Math.ceil(numericIndex) : Math.floor(numericIndex);
}
const normalizedIndex = integerIndex >= 0 ? integerIndex : length + integerIndex;
if (normalizedIndex < 0 || normalizedIndex >= length) {
return undefined;
}
return this[normalizedIndex];
};