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这种数组函数。后面再讲。