(1) pop() 办法用于删除数组的最初一个元素并返回删除的元素。留神:此办法会扭转数组的长度!语法:array.pop()
返回值:所有类型 返回删除的元素
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.pop();
console.log(fruits);
//fruits 后果输入:Banana,Orange,Apple
(2) 重构 pop() 办法
Array.prototype.myPop = function(){if(this.length==''){return undefined;}else{var result = this[this.length-1];
this.length--;
return result;
}
}
var arr = [1,2,3,4,5];
console.log(arr);
var result = arr.myPop();
console.log(result);
后果如图:![图片.png](/img/bVcUyCl)
(1)push() 办法可向数组的开端增加一个或多个元素,并返回新的长度。留神:新元素将增加在数组的开端,此办法扭转数组的长度
语法:array.push(item1, item2, ..., itemX)
返回值:Number 数组新长度
var fruits = ["Banana", "Orange", "Apple", "Mango"];
// push() 增加元素到开端 参数是要增加的元素 返回值是批改之后数组的长度【扭转原数组】fruits.push("Kiwi")
console.log(fruits);
//fruits 后果输入:Banana,Orange,Apple,Mango,Kiwi
(2)push() 办法重构
Array.prototype.myPush = function(){for(var i = 0; i<arguments.length; i++){this[this.length]=arguments[i];
}
}
var arr = [1,2,3,4,5];
console.log(arr);
var result = arr.myPush('a');
console.log(result);
后果如图:![图片.png](/img/bVcUyCC)
(1) shift() 办法用于把数组的第一个元素从其中删除,并返回第一个元素的值。留神:此办法扭转数组的长度!返回值:任何类型(*)数组原来的第一个元素的值(移除的元素)。var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.shift()
console.log(fruits);
//fruits 后果输入:Orange,Apple,Mango
(2) shift() 办法重构
Array.prototype.myShift = function(){var result = this[0];
for(var i=0; i<this.length; i++){this[i]=this[i+1];
}
this.length--;
return result;
}
var arr = [1,2,4,5];
console.log(arr);
var result = arr.myShift();
console.log(result);
console.log(arr);
后果如图:![图片.png](/img/bVcUyCV)
(1)unshift() 办法可向数组的结尾增加一个或更多元素,并返回新的长度。留神:该办法将扭转数组的数目
语法:array.unshift(item1,item2, ..., itemX)
参数:item1,item2,...,itemX 形容:可选。向数组起始地位增加一个或者多个元素
返回值:Type 形容 Number 数组新长度
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon","Pineapple");
console.log(fruits)
//fruits 将输入:Lemon,Pineapple,Banana,Orange,Apple,Mango
(2)unshift() 办法重构
Array.prototype.myUnshift = function(){
var sum = this.length+arguments.length;
for(var i=sum; i>0; i--){if(i>arguments.length){this[i-1]=this[i-1-arguments.length];
}else{this[i-1]=arguments[i-1];
}
}
return sum;
}
var arr = [1,2,3,4,5];
console.log(arr);
var result = arr.myUnshift('a','b','c');
console.log(result);
console.log(arr);
后果如图:![图片.png](/img/bVcUyDM)
(1)forEach() 办法用于调用数组的每个元素,并将元素传递给回调函数
留神: forEach() 对于空数组是不会执行回调函数的。语法:array.forEach(function(currentValue, index, arr), thisValue)
参数:
参数 |
形容 |
function(currentValue, index, arr) |
必须。数组中每个元素须要调用的函数。 |
thisValue |
可选。传递给函数的值个别用 “this” 值。如果这个参数为空,“undefined” 会传递给 “this” 值 |
参数 |
形容 |
currentValue |
必须。以后元素 |
index |
可选。以后元素的索引值。 |
arr |
可选。以后元素所属的数组对象。 |
返回值:undefined
var numbers = [4, 9, 16, 25];
numbers.forEach(function (number, index) {console.log(index + '--' + number);
})
// 0 -- 4
// 1 -- 9
// 2 -- 16
// 3 -- 25
(2) forEach() 办法重构
Array.prototype.myForEach = function(fun,){for(var i=0; i<this.length; i++){fun(this[i],i,this);
}
}
var arr = [1,2,3];
var result = arr.myForEach(function(){console.log(item,index,arr);
});
console.log(result);
(1)every() 办法用于检测数组所有元素是否都合乎指定条件(通过函数提供)。every() 办法应用指定函数检测数组中的所有元素:a. 如果数组中检测到有一个元素不满足,则整个表达式返回 *false*,且残余的元素不会再进行检测。b. 如果所有元素都满足条件,则返回 true。留神:every() 不会对空数组进行检测。every() 不会扭转原始数组。语法:array.every(function(currentValue,index,arr), thisValue)
参数:
参数 |
形容 |
function(currentValue, index,arr)* |
必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue |
可选。对象作为该执行回调时应用,传递给函数,用作 “this” 的值。如果省略了 thisValue,”this” 的值为 “undefined” |
参数 |
形容 |
currentValue |
必须。以后元素的值 |
index |
可选。以后元素的索引值 |
arr |
可选。以后元素属于的数组对象 |
返回值:布尔值。如果所有元素都通过检测返回 true,否则返回 false。检测数组 *ages* 的所有元素是否都大于等于 18 :
var ages = [32, 33, 16, 40];
var result = ages.every(function (age) {return age >= 18})
console.log(result);// 输入后果为:false
(2)every() 办法重构
Array.prototype.myEvery = function(fun,obj){for(var i=0; i<this.length; i++){if(!(obj?fun.bind(obj)(this[i]):fun(this[i]))){return false;}
}
return true;
}
var arr = [1,2,3,4,5];
var result = arr.myEvery(function(item){console.log(this);// 指向全局
return item>1;// 短路准则
},{name:'zhangsan'})// 第二个对象存在时 this 指向这个对象
console.log(result);
(1)some() 办法用于检测数组中的元素是否满足指定条件(函数提供)some() 办法会顺次执行数组的每个元素:a. 如果有一个元素满足条件,则表达式返回 *true* , 残余的元素不会再执行检测。b. 如果没有满足条件的元素,则返回 false。留神:some() 不会对空数组进行检测。some() 不会扭转原始数组。语法:array.some(function(currentValue,index,arr),thisValue)
参数:
参数 |
形容 |
function(currentValue, index,arr) |
必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue |
可选。对象作为该执行回调时应用,传递给函数,用作 “this” 的值。如果省略了 thisValue,”this” 的值为 “undefined” |
参数 |
形容 |
currentValue |
必须。以后元素的值 |
index |
可选。以后元素的索引值 |
arr |
可选。以后元素属于的数组对象 |
返回值:布尔值。如果数组中有元素满足条件返回 true,否则返回 false。// 检测数组中是否有元素大于 18:
var ages = [32, 33, 16, 40];
var result = ages.some(function (age) {return age >= 18})
console.log(result);// 输入后果为:true
(2)some() 办法重构
Array.prototype.mySome = function(fun,obj){for(var i=0; i<this.length; i++){if(obj?fun.bind(obj)(this[i]):fun(this[i])){return true;}
}
return false;
}
var arr = [1,2,3,4,5];
var result = arr.mySome(function(item){console.log(this);
return item>1;
},{name:'zhangsan'});
console.log(result);
(1)filter() 办法创立一个新的数组,新数组中的元素是通过查看指定数组中符合条件的所有元素。留神:filter() 不会对空数组进行检测。filter() 不会扭转原始数组。语法:array.filter(function(currentValue,index,arr), thisValue)
参数:
参数 |
形容 |
function(currentValue, index,arr) |
必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue |
可选。对象作为该执行回调时应用,传递给函数,用作 “this” 的值。如果省略了 thisValue,”this” 的值为 “undefined” |
参数 |
形容 |
currentValue |
必须。以后元素的值 |
index |
可选。以后元素的索引值 |
arr |
可选。以后元素属于的数组对象 |
返回值:返回数组,蕴含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。// 返回数组 *ages* 中所有元素都大于 18 的元素:
var ages = [32, 33, 16, 40];
var result = ages.filter(function (age) {return age >= 18})
console.log(result);// 输入后果为:[32, 33, 40]
(2)filter() 办法重构
Array.prototype.myFilter = function(fun,obj){var result = [];
for(var i=0; i<this.length; i++){if(obj?fun.bind(obj)(this[i]):fun(this[i])){result.push(this[i]);
}
}
return result;
}
var arr = [1,2,3,4,5];
var result = arr.myFilter(function(item){console.log(this);
return item>2;
},{name:'zhangsan'});
console.log(result);
(1)map() 办法返回一个新数组,数组中的元素为原始数组元素调用函数解决后的值。map() 办法依照原始数组元素程序顺次解决元素。留神:map() 不会对空数组进行检测。map() 不会扭转原始数组。语法:array.map(function(currentValue,index,arr), thisValue)
参数:
参数 |
形容 |
function(currentValue, index,arr) |
必须。函数,数组中的每个元素都会执行这个函数 函数参数见下表 |
thisValue |
可选。对象作为该执行回调时应用,传递给函数,用作 “this” 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。 |
参数 |
形容 |
currentValue |
必须。以后元素的值 |
index |
可选。以后元素的索引值 |
arr |
可选。以后元素属于的数组对象 |
返回值: 返回一个新数组,数组中的元素为原始数组元素调用函数解决后的值。// 返回一个数组,数组中元素为原始数组的平方根:
var numbers = [4, 9, 16, 25];
var result = numbers.map(function (number) {return Math.sqrt(number)
})
console.log(result);// 输入后果为:[2, 3, 4, 5]
Array.prototype.myMap = function(fun,obj){var result = [];
for(var i=0; i<this.length; i++){result.push(obj?fun.bind(obj)(this[i]):fun(this[i]));
}
return result;
}
var arr = [1,2,3,4,5];
var result = arr.myMap(function(item){console.log(this);// 全局对象
return item+1;// 新数组 数组元素 +1
},{name:'zhangsan'})// 此时 this 指向 name
console.log(result);