1. 操作方法二:slice()、splice()
(1)切片:slice()方法,基于当前数组的一个或多项创建新的数组,可以接受一个或者两个参数,即要返回项的起始和结束位置。
一个参数:返回从该参数指定位置开始到当前数组末尾的所有项目
两个参数:返回起始位置之间的项,但是不包括结束位置的项。slice方法不影响原数组。
例如:
var colors = ["red","orange","yellow","green","blue","purple"];
console.log(colors); //red,orange,yellow,green,blue,purple
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
console.log(colors2); //orange,yellow,green,blue,purple
console.log(colors3); //orange,yellow,green);
如果slice()方法中的参数含有负数,则用该数加上数组的长度来确定相应的位数。
如果结束位置小于开始位置则返回空数组
例如:
var colors = ["red","orange","yellow","green","blue","purple"];
var colors2 = colors.slice(-1);
var colors3 = colors.slice(-3,-1);
console.log(colors2); //purple
console.log(colors3); //green,blue
(2)splice()方法:可以对数组进行删除、替换、添加
- 删除:可以删除任意数量的项,指定2个参数,要删除的第一项和要删除的项的个数。
colors.splice(0,2);
,
删除数组的前两项。 - 插入:可以向指定位置插入任意数量的项,提供3个参数:起始位置,0(要删除的项的个数)和要插入的项。如果插入多个项,可以在传入第四、五个项
colors.splice(2,0,"pink");
从数组的第二项后插入“pink” - 替换:可以向指定位置插入任意数量的项,指定3个参数:起始位置、要删除的项数、要插入的任意数量的项,插入项和删除项不需相等。
colors.splice(0,2,"pink","brown");
删除数组的前两项,并从第一项开始插入"pink",“brown”
2.位置方法:indexOf()和lastIndexOf()方法
两个参数,要查找的项和表示查找起点位置的索引(可选)
indexOf()从前向后查找
lastIndexOf()从后 向前查找
二者均返回要查找的项在数组中的位置,未查找到返回-1.
例如:·
var nums = [1,2,3,4,5,6,7,4,8,9,10];
console.log(nums.indexOf(4)); //3
console.log(nums.lastIndexOf(4)); //7
console.log(nums.indexOf(4,5); //7
3. 迭代方法
5个,每个方法都接收两个参数:在每一项上运行的函数和运行该函数的作用域对象—影响this(可选),均不影响原数组。
var nums = [1,2,3,4,5,6,7,4,8,9,10];
- every():对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
- some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
- filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach(): 对数组中的每一项运行给定函数,没有返回值。
- map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
var everyResult = nums.every(function(item,index,array){
return (item>4);
});
console.log(everyResult); //false
var someResult = nums.some(function(item,index,array){
return (item>4);
});
console.log(someResult); //true
var filterResult = nums.filter(function(item,index,array){
return (item>4);
});
console.log(filterResult); //5,6,7,8,9,10
var mapResult = nums.map(fucntion(item,index,array){
return (item*2);
});
console.log(mapResult); //2,4,6,8,10,12,14,8,16,18,20
var foreachResult = nums.forEach()item,index,array){
console.log(item*2);
});
4. 归并方法:reduce(),reduceRight()
二者均迭代数组的所有值并返回一个最终的值,二者的区别和indexOf()和lastIndexOf()一样。
接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值(可选)
传递的函数包含四个参数,前一个值,当前值,项的索引值,数组对象。
例如:
//求数组的项的和
var nums = [1,2,3,4,5];
var sum = nums.reduce(function(prev,curr,index,array)[
return prev+curr;
});
console.log(sum);
欢迎大家一起讨论,进步!!!