javascript中数组的常用高阶函数

什么是高阶函数?

高阶函数的定义:如果一个函数操作其他函数,即将其他函数作为参数或将

函数作为返回值,则称这个函数是一个高阶函数。

javascript的数组中有常用哪些高阶数组?

数组的高阶函数一览表

函数的作用

函数名

描述

遍历

forEach接收一个操作当前元素的函数,从而完成遍历中重复的操作,此函数没有返回值(注:可参考下列模拟源代码来分析为什么没有返回值,因为即使传递一个有返回值的函数当参数,每次操作中产生的返回值也只是参数函数的返回值,不是forEach函数的返回值)
过滤filter接收一个判断每个元素是否符合过滤条件的函数,从而过滤出符合条件的元素(注:类似SQL语句中的where子句)
映射map接收一个返回指定映射属性的值的函数(注:类似SQL语句中的select语句)
聚合汇总reduce接收两个参数,第一个参数是描述数据聚合策略的函数(该函数必需有两个参数,第一个是汇总变量,第二个是遍历时的当前值),第二个参数值是统计变量的初始值(注:返回的结果是一个独立的值)

//数组中的高阶函数 forEach
console.log("------------数组中的高阶函数 forEach------------");
function forEach(array,action){
  for(var i=0; i<array.length; i++)
    action(array[i]);
}
var strs=["tom","zack","leo"];
//forEach(strs,console.log);
var numbers=[0,1,2,3,4,5,6,7,8,9],sum=0;
//forEach(numbers,function(number){sum += number;});
//console.log(sum);
numbers.forEach(function(number){sum += number;});  
console.log(sum);
//numbers.forEach(console.log);

//JSON test
console.log("------------JSON test------------");
var obj = {
  "name":"lili",
  "sex":"female",
  "age":18
};
var jsonStr = JSON.stringify(obj);
console.log(jsonStr);
var jsonObj = JSON.parse(jsonStr);
console.log(jsonObj);

//数组中的高阶函数 filter
console.log("------------数组中的高阶函数 filter------------");
var persons = [
  {"name":"lili",
  "sex":"female",
  "age":18},
  {"name":"zack",
  "sex":"male",
  "age":20},
  {"name":"ruby",
  "sex":"female",
  "age":24},
  {"name":"leo",
  "sex":"male",
  "age":30},
  {"name":"lucy",
  "sex":"female",
  "age":35},
];
var passedBySex = persons.filter(
  function(person){
    return person.sex=="male";
});
console.log(passedBySex);

//数组中的高阶函数 map
console.log("------------数组中的高阶函数 map------------");
var mapName = passedBySex.map(
  function(person){
    return person.name;
});
console.log("单项数据映射name:",mapName);
var personsNameAndAge = persons.map(
  function(person){
    return {"name":person.name,"age":person.age};
});
console.log("多项数据映射name和age:",personsNameAndAge);

//数组中的高阶函数 reduce
console.log("------------数组中的高阶函数 reduce------------");
var personsAge = persons.map(function(person){return person.age;});
var reduceAge = personsAge.reduce(
  function(a,b){
    return a+b;
});
console.log(reduceAge,persons[0].age+persons[1].age);


此外数组中还有两个标准方法,分别是every和some,every函数的作用类似于运算符&&,some函数的作用类似于||

var numbers = [11,12,13,14,22,23];
var test=numbers.every(function(num){
  return num>10;
});
console.log(test);
test=numbers.some(function(num){
  return num>16;
});
console.log(test);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值