JavaScript引用类型详解——探讨Array类型(切片、位置索引、迭代、归并)

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);	


欢迎大家一起讨论,进步!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daisy_JuJuJu

你们的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值