es5新增的数组方法

常用数组元素的迭代方法:

1、 map()方法

返回一个新数组,新数组是原数组的映射;
不改变原数组的值;
新数组的元素值是每次函数return的返回值;
若不写return,接收的新数组的元素值将全为空;

var arr = [20,13,11,8,0,11];
var brr = arr.map(function(item)){

	//练习一:将数组的每个元素都将增加到原来的1.2倍
	return item*1.2;
	// 此时brr为a数组每个元素的1.2倍

	//练习二:若return 1,则新数组的每个元素值均为1
	return 1;
}

2、indexOf()方法

判断一个元素是否存在于数组中,若不存在返回-1,若存在就返回它第一次出现的位置。

var arr = [20,13,11,8,0,11];
arr.indexOf(11); //返回第一个11的索引:2
arr.indexOf(2); //返回-1

3、forEach()方法

forEach()方法的功能是循环遍历数组中的每一个元素;
forEach()方法会接收一个函数;
这个函数包含三个形参,分别为:item, index, array, 用不到时可以不写

1、item 表示每次迭代的元素
2、index 表示每次迭代元素的下标
3、array 表示原数组

var arr = [20,13,11,8,0,11];
var min = arr[0]; //假设数组的第一个元素的为最小值

arr.forEach(function(item,index,array){

	//练习一:输出数组的每个元素及其对应的下标
	console.log(index,item); 
	
	//练习二:输出数组中值为奇数的元素
	if(item%2){ 
		console.log(item); 
	}
	
	//练习三:求数组的最小值
	if(item<min){
		min = item;
	}
})
alert(min);

4、some()方法

return返回的值只要有一项为true,最终的返回值就为true,不会继续遍历后边的元素;
若没有一项满足返回值为true的,就返回false;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr = arr.some(function(item){
	return item>10;
})
alert(brr); //true

5、filter()方法

过滤元素,返回一个新数组;
新的数组由每次函数返回值为true对应的元素组成;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr =arr.filter(function(item)){
	//返回值为奇数的元素
	return item%2;
}

6、 every()方法

对数组的每一项执行给定的函数,假如该函数每一项都返回true,最后结果才为true;
只要有一项返回值为false,最后结果就是false。且后边的元素都不会再继续执行函数;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr = arr.every(function(item){
	return item>10;
})
alert(brr); //false

7、reduce()方法

收敛,返回值是最后一次函数调用的返回值;
不写return时,默认返回undefined;

运行机制:
一开始,prev代表数组第一个元素,next指向数组第二个元素 ;
函数有个返回值,会作为下次的prev值;
当给方法第二个参数值时,prev从传的第二个参数值开始,next从第一个元素值开始

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
	console.log(prev+"---"+next);
	return 4;
})
console.log(res);

/*
分析:
一开始,prev代表数组第一个元素,next指向数组第二个元素  1---4
函数有个返回值,会作为下次的prev值
4---5
4---7
4---8
4---10
*/
//应用:求数组所有元素的和

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
	console.log(prev+"---"+next);
	return prev+next;
})
console.log(res);

/*
分析:
一开始,prev代表数组第一个元素,next指向数组第二个元素  1---4
函数有个返回值,会作为下次的prev值
5---5  返回10
10---7  返回17
17---8  返回25
25---10   返回35
*/
//reduce()还可以有第二个参数

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
	console.log(prev+"---"+next);
	return prev+next;
},100)  //prev从传的第二个参数值100开始,next从第一个元素值开始
console.log(res);
//reduce()应用:将两个数组合并成一个对象

var arr3 = ["Lydia","21"];
var arr4 = ["name","age"];
arr4.reduce(function(prev,next,item){
	prev[next] = arr3[index];
	return prev;
},{}); //传的第二个参数值是一个空对象
console.log(obj);

/*
第一次的prev是一个空对象,对象的next属性(即arr4的第一个元素)的值为arr3的第一个元素值
*/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值