js中关于map几种不同阶段的用法

今天刚好在对一个js对象进行处理,需要在一个json里面,只保留一个键字段做处理,当然写法有很多种,这里列出我的思考过程;

举例:

var kvArray = [{a: 1, b: 10},
{c: 2, b: 20},
{d: 3, c: 30}];
//初级写法  一开始我最初的想法
var reformattedArray = kvArray.map (function(obj){
	var robj={};
	if (obj.b) {
	robj['b'] = obj.b;
      return robj;
    }
  });

输出的结果为:

> Array [Object { b: 10 }, Object { b: 20 }, undefined]

基本达到要求,但是还需要再次处理,去掉undefined,比较麻烦,去查了一下文档,找到 flatMap ,尝试:

//中级写法  flatMap允许对item进行增减
var reformattedArray = kvArray.flatMap (function(obj){
	var robj={};
	if (obj.b)
      return {b:obj.b};
	  else
	  return [];
  });

输出结果:

> Array [Object { b: 10 }, Object { b: 20 }]

虽然结果符合预期但是很明显代码过长,if判断很明显可以用三元运算代替,再次改进:

//资深写法  到这一步就比较满意了,一行代码解决。
var reformattedArray = kvArray.flatMap((obj)=> ( 
  obj.b ? {b:obj.b} : []
));

输出结果和上一步是一致的。

人已赞赏
雕技术

b2主题2.4.6更新了哪些东西?

2020-9-4 17:27:09

雕营销

逆水寒给楚相玉送的什么药?送药主线剧情

2018-7-5 18:22:33

免责声明本文中提到的资源均来自于互联网,仅供个人学习交流,若您喜欢本文可附上原文链接随意转载。
版权人申诉:我要申诉
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索