Js数组的三种方式

Published
2022-07-27
浏览次数 :  219

ForEach

forEach 在一个数组中重复执行,循环到数组中每个值都会执行一个callback 函数,数组里有几个项目就会执行callback函数几次。永远返回undefined的值。所以无法存储一个值到foreach的函数里。

forEach的callback函数会返回传递三个参数,第一是循环数组里面单个的项目,第二个参数是数组的索引,第三个是完整的传递的数组信息。

arr.forEach(function(value,index,array){});

用法:

function halfValue(arr) {
		var newArr = [];
		arr.forEach(function(val) {
			newArr.push(val / 2);
		});
		return newArr;
	}

	newarray = [2,4,6]

	console.log(halfValue(newarray));

用法举例:获取奇数的值


	function onlyEvenValue(arr) {

		var newArr = []

		arr.forEach(function(val){
			if (val % 2 === 0) {
				newArr.push(val);
			}
		});

		return newArr;
	}

	console.log(onlyEvenValue([2,3,5,7,8]));

获取第一个和最后一个的值

function getFirstAndLast(arr) {
	var newArr = [];
	arr.forEach(function(val) {
		newArr.push(val[0] + val[val.length - 1])
	});
	return newArr;
}
console.log([2,4,5,6,7]);

Map函数

  • map函数创建一个新的数组
  • map函数循环一个数组
  • 循环数组每个项目时运行callback函数
  • 添加callback函数的结果到新的数组中
  • 返回新的数组。(forEach返回的是undefined)

map返回和原数组一样长度的新数组

用法:

var arr = [2,3,4,5];
		arr.map((val) => {
			return val * 2;
		});

返回的新数组:

[4,6,8,10];

map函数里面永远return值。

函数封装使用方法,记住一定要return结果的值才能返回:

function doubleValues(arr) {
			return arr.map(function(val) {
				return val * 2;
			});
		}

		console.log(doubleValues([2,4,5,6,7]));

FILTER

  • 创建一个新数组
  • 在数组中循环
  • 数组中每个项目都执行一个callback函数
  • 如果callback执行返回的是true那么这个值就添加到新的数组当中
  • 如果callback执行的返回的是false的值那么这个值就被忽略

callback执行的函数结果永远是对错(boolean)

用法:

var arr = [4,5,6,8,9];

		arr.filter(function(val) {
			return val > 5
		});

上面这个函数返回的结果就是 6,8,9, 因为如果val > 5 为true的结果成立的话 只有6,8,9 , 4,5的话 结果为false所以被忽略。

//返回 名字长度大于3的名字
		
		var names = [{name:'wayne'},{name:'hunter'},{name:'may'}];

		var fullname = names.filter(function(item){
			return item.name.length > 5;
		});

		console.log(fullname);

callback函数一定要返回true或者false.

还有some,every,reduce这种数组函数。后面再讲。


Top