JS——array.map()、reduce()和reducer(归纳函数)

array.map()

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组
这里的map不是“地图”的意思,而是指“映射”。

语法

array.map(function(currentValue,index,arr), thisValue)

参数说明:

currentValueindexarrthisValue
必需可选可选可选
当前元素的值当前元素的索引值当前元素属于的数组对象对象作为该执行回调时使用,传递给函数,用作 “this” 的值。如果省略,或者传入 null、undefined,那么回调函数的 this 为全局对象。

例子:

//将arr1的元素加1,并返回arr2
var arr1 = ee.List([15,16,17]);
var arr2 = arr1.map(function(value) {
 return ee.Number(value).add(1);
});
print("arr1+1: ", arr2);
//获取email地址
var users = [
  {name: "张含韵", "email": "zhang@email.com"},
  {name: "江一燕",   "email": "jiang@email.com"},
  {name: "李小璐",  "email": "li@email.com"}
];
var emails = users.map(function (user) { return user.email; });
print(emails);

reducer(归纳函数)

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

参数说明:

totalcurrentValuecurrentIndexarrinitialValue
必需可选可选可选可选
初始值, 或者计算结束后的返回值当前元素的值当前元素的索引当前元素属于的数组对象传递给函数的初始值

应用场景:

reduce(归纳)方法具有分散运算的特点,常见于下面几种应用之中:

  • 两相比较最后取出特定的值(最大或最小值)
  • 计算所有成员(值),总合或相乘
  • 其它需要两两处理的情况(组合巢状数组等等)

例子:

//各元素相加
let sum = [0, 1, 2, 3].reduce(function (accumulator, ) {
  return accumulator + currentValue
}, 0)
// sum is 6

reduce()

  • 数据集减少到单个聚合值:通过定义起点来运行。当该方法迭代每个值时,该起点将被修改并向下传递。
  • reduce函数的返回结果类型和传入的初始值相同
  • reduce() 是数组的归并方法,与forEach()、map()、filter()等迭代方法一样都会对数组每一项进行遍历,但是reduce() 可同时将前面数组项遍历产生的结果与当前遍历项进行运算,这一点是其他迭代方法无法企及的。

语法

arr.reduce(function(prev,cur,index,arr){
...
}, init);

arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;

index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
常用的参数只有两个:prev 和 cur

map参考:
https://www.runoob.com/jsref/jsref-map.html
https://www.cnblogs.com/moqiutao/p/7097419.html
reducer参考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
https://www.runoob.com/jsref/jsref-reduce.html
reduce参考:
浅谈JS中 reduce() 的用法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值