Have you ever wondered how you’d create your own implementation of Array in JavaScript? No? Oh, well give it a shot anyway.
Implement array so that the code below works.
const friends = array("Ben", "Lynn", "Alex")
friends.push("Mikenzi") // 4
friends.pop() // Mikenzi
friends.filter((friend) => {
return friend.length === 4
})
This may seem strange (it is), but it makes for a good learning activity which I know is the first thing you want to do in the morning when you wake up and open this newsletter.
This isn’t terribly practical, but it is a fun activity to do to really grasp the often overlooked bits of JavaScript.
function array () {
let arr = Object.create(array.prototype)
Object.defineProperty(arr, 'length', {
value: 0,
enumerable: false,
writable: true,
})
for (key in arguments) {
arr[key] = arguments[key]
arr.length += 1
}
return arr
}
array.prototype.push = function (element) {
this[this.length] = element
this.length++
return this.length
}
array.prototype.pop = function () {
this.length--
const elementToRemove = this[this.length]
delete this[this.length]
return elementToRemove
}
array.prototype.filter = function (cb) {
let result = array()
for (let index in this) {
if (this.hasOwnProperty(index)) {
const element = this[index]
if (cb(element, index)) {
result.push(element)
}
}
}
return result
}
const friends = array("Ben", "Lynn", "Alex")
friends.push("Mikenzi") // 4
friends.pop() // Mikenzi
friends.filter((friend) => {
return friend.length === 4
})
If you’re curious or confused by the code, we wrote about it here.