Array 的方法 reduce 是一个有非常多用处的函数。 它一个非常具有代表性的作用是将一个数组转换成一个值。但是你可以用它来做更多的事。

1、使用"reduce"代替"map"

function map(arr, exec) {
return arr.reduce(function(res, item, index) {
var newArr = exec(item, index);
res.push(newArr);
return res;
}, [])
}
var _arr = map([10, 20, 30, 50], function(item) {
return item * 2
})
console.log(_arr); // => [20, 40, 60, 100]

2、使用"reduce"代替"filter"

function filter(arr, exec) {
return arr.reduce(function(res, item, index) {
if (exec(item, index)) {
res.push(item)
}
return res;
}, []) }
var _arr = filter([10, 20, 30, 50], function(item) {
return item < 50
})
console.log(_arr); // => [10,20,30]

3、应用

计算数组中元素出现的次数(将数组转为对象)

var cars = ['BMW', 'Benz', 'Benz', 'Tesla', 'BMW', 'Toyota'];
var carsObj = cars.reduce(function(obj, name) {
obj[name] = obj[name] ? ++obj[name] : 1;
return obj;
}, {});
console.log(carsObj); // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }

去除数组对象中重复的值(根据对象的某一个key值,key重复就认为数组重复)

var data = [{
id: 0,
name: 'jack',
age: 30
}, {
id: 1,
name: 'jackchen',
age: 20
}, {
id: 2,
name: 'eric',
age: 15
}, {
id: 3,
name: 'tomas',
age: 20
}, {
id: 4,
name: 'john',
age: 20
}, {
id: 5,
name: 'jacky',
age: 20
}] function unique(arr, key) {
var hash = {};
return arr.reduce((item, next) => {
hash[next[key]] ? '' : (hash[next[key]] = true && item.push(next));
return item;
}, [])
}
var newData = unique(data, "age");
console.log(newData);

最新文章

  1. arch+xfce4系统配置
  2. html显示缩略小图 无失真图片
  3. 用ORBSLAM2运行TUM Dataset数据集
  4. UIWebView和Js交互
  5. 【Leafletjs】4.L.Map 中文API
  6. volatile in thread
  7. HDU 5862(离散化+树状数组)
  8. Learning Scrapy笔记(五)- Scrapy登录网站
  9. Java组待开发的任务
  10. uva 10047 the monocyle (四维bfs)
  11. Linux操作系统的LILO详解
  12. AngularJs学习笔记7——四大特性之模块化设计
  13. OC中线程的状态相关
  14. CodeForces 721B
  15. 洛谷P2402 奶牛隐藏(网络流,二分答案,Floyd)
  16. 学习笔记-JS公开课二
  17. 【MySQL】InnoDB 内存管理机制 --- Buffer Pool
  18. genPanel.py
  19. oracle中查询条件包含null时
  20. PLC300寻址指令

热门文章

  1. 9th 学习博客:使用Codebloks实现C++的图形化界面
  2. [转帖]NVMe到底是什么?用它的SSD有啥优势?
  3. [转帖]ssd固态硬盘的Trim命令是什么?
  4. 微信小程序组件 模块化错和叹号
  5. 【大数据】关于Kafka的进一步理解
  6. ionic2如何升级到最新版本、配置开发环境
  7. P2325 [SCOI2005]王室联邦
  8. git 复位出现If no other git process is currently running, this probably means a git process crashed in this repo
  9. attention、self-attention、transformer和bert模型基本原理简述笔记
  10. Nginx web服务优化 (一)