ES5新增数组常用方法

ES5新增数组常用方法

  • indexOf()
    跟字符串查找一样,查找指定元素是否存在,如果存在,返回下标,如果不存在返回-1
let arr = [1,2,3,4];
console.log(arr.indexOf(3));	// 2
  • lastIndexOf()
    跟indexOf()一样,只是查找起始点不同,indexOf是从第一个开始查找,
    lastIndexOf()是从最后一个查找,如果存在,返回下标,如果不存在返回-1
let arr = [1,2,3,4];
console.log(arr.indexOf(3));	// 2
  • forEach()
    跟之前的for()循环一样,只是forEach更灵活,
    有两个参数第一个参数是回调函数,第二个参数是控制当前this指向谁
    第一个参数(回调函数):function(value, index, arr){};
    回调函数内的三个参数分别为:当前循环的值,当前循环的索引,当前数组本身
    第二个参数:this
示例:
let arr = [1,2,3,4];
arr.forEach(function(value, index, arr){
	console.log(value, index, arr, this);
	//	1 0 [1, 2, 3, 4] document(因为第二个参数把this指向了document)
	//	2 1 [1, 2, 3, 4] document(因为第二个参数把this指向了document)
	//	3 2 [1, 2, 3, 4] document(因为第二个参数把this指向了document)
	//	4 3 [1, 2, 3, 4] document(因为第二个参数把this指向了document)

}, document);	// 这个this随意指向谁都可以(箭头函数除外)

箭头函数示例:
let arr = [1,2,3,4];
arr.forEach((value, index, arr) => {
	console.log(value, index, arr, this);
}, document);	// 这里的this指向了window,
				// 因为箭头函数的this指向的是当前函数所在的对象
  • map()
    map()方法返回一个被操作后的新数组,不会改变原数组
    map()一般配合return使用,如果没有return那跟forEach一样;
示例:
let arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"wang", age:28, like:"sleep"},
	{name:"ling", age:38, like:"eat"}
]
let newArr = arr.map(function(value, index, arr){
	let json = {};
	json.n = value.name;
	json.a = value.age;
	json.l = value.like;
	return json;
})
console.log(newArr);

/* 输出:
[
	{n: "yang", a: 18, l: "sport"}
	{n: "wang", a: 28, l: "sleep"}
	{n: "ling", a: 38, l: "eat"}
]
*/
  • filter()
    过滤,过滤不符合条件的元素,如果回调函数返回true则保留,返回false则过滤掉
示例:
let arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"wang", age:28, like:"sleep"},
	{name:"ling", age:38, like:"eat"}
]
let newArr = arr.filter(function(value, index, arr){
	return value.name == "yang";	// 返回name = "yang"的元素,过滤掉不符合的
})
console.log(newArr);	// {name: "yang", age: 18, like: "sport"}
  • some()
    判断数组内是否有指定元素,如果只要有一个则返回true,如果一个都没有则返回false
some()和every()相对;
some()是数组内只要有一个满足条件则返回true,一个都没有返回false
every()是数组内全部满足条件则返回true,否则返回flase

示例:
let arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"ling", age:38, like:"eat"}
]

let result = arr.some(function(value, index, arr){
	return value.name == "yang";
});
console.log(result)		// ture
  • every()
    判断数组内是否都有指定元素,如果全部都有则返回true,
    如果有一个没有指定元素则返回false
    some()和every()相对;
    some()是数组内只要有一个满足条件则返回true,一个都没有返回false
    every()是数组内全部满足条件则返回true,否则返回flase
示例:
let arr = [
	{name:"yang", age:18, like:"sport"},
	{name:"yang", age:38, like:"eat"}
]

let result = arr.every(function(value, index, arr){
	return value.name == "yang";
});
console.log(result)		// ture
  • reduce()
    reduce()回调函数有四个参数,
    第一个参数为:之前计算过的值,
    第二参数为:之前计算过的值的下一个值
    第三个参数:当前索引
    第四个参数为:当前数组对象
    类似递归,可以求和之类的操作
    reduce()和reduceRight()类似,只是执行方向不同,
    reduce()从数组的开头往后递归
    reduceRight()从数组的末尾往前递归
示例:
let arr = [1,2,3];
let result = arr.reduce(function(prev, next, index, arr){
	return prev + next;
})
console.log(result)		// 6
  • reduceRight()
    reduceRight()和reduce()类似,只是执行方向不同,
    reduceRight()从数组的末尾往前递归
    reduce()从数组的开头往后递归
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值