21
loading...
This website collects cookies to deliver better user experience
let arr = [1,2,3,4]
arr.forEach((item,idx,arr)=>console.log(item*2,idx))
//The console prints:
2 0
4 1
6 2
8 3
let myforEach = function (callback){
//this refers to the entity that the function is a method of.
for(let i=0;i<this.length;i++){
callback(this[i],i,this);
}
}
Array.prototype.myforEach=myforEach
arr.myforEach((item,idx,arr)=>console.log(item,idx,arr))
1 0 [1, 2, 3, 4]
2 1 [1, 2, 3, 4]
3 2 [1, 2, 3, 4]
4 3 [1, 2, 3, 4]
let arr = [1,2,3,4]
arr.map((item)=> item*2)
//output
[2,4,6,8]
let myMap = function(callback){
let result = []
for(let i = 0;i < this.length ; i++){
result.push(callback(this[i],i,this))
}
return result;
}
Array.prototype.myMap = myMap
arr.myMap((item)=>item*2) //you can include or exclude the other 2 arguments to the callback function
//output
[2,4,6,8]
let arr = [1,2,3,4]
arr.filter((item)=>item%2==1)
//output
[1,3]
let myFilter = function(callback){
let result = [];
for(let i=0;i<this.length;i++){
if(callback(this[i],i,this)){
result.push(this[i])
}
}
return result;
}
Array.prototype.myFilter = myFilter
arr.filter((item,idx,arr)=>item%2==1)
//output
[1,3]
let arr = [1,2,3,4]
arr.filter((item)=>item%2==1)
//output
[1,3]
let myFilter = function(callback){
let result = [];
for(let i=0;i<this.length;i++){
if(callback(this[i],i,this)){
result.push(this[i])
}
}
return result;
}
Array.prototype.myFilter = myFilter
arr.filter((item,idx,arr)=>item%2==1)
//output
[1,3]
let arr = [1,2,3,4]
arr.reduce((acc,cur)=>{
console.log("acc: " ,acc,"curr: ",cur)
return acc+cur
})
//output
acc: 1 cur: 2
acc: 3 cur: 3
acc: 6 cur: 4
10
function myReduce(callback, initialValue) {
let acc,curr;
if (!this.length && !initialValue)
throw new Error("Can't reduce on empty array without an intial value");
else {
// If initialValue is given then it is treated as the accumulator else the 0th index is the accumulator
acc = initialValue ? initialValue : this[0];
for (let i = 1; i < this.length; i++) {
curr = this[i];
acc = callback(acc, curr, i, this);
}
}
return acc;
}
Array.prototype.myReduce = myReduce
arr.myReduce((acc,cur)=>acc+cur)
//output
10