let myData = [
{id:1,name:"小明",age:10,Career:null},
{id:2,name:"小抢",age:10,Career:"码农"},
{id:3,name:"小网",age:10,Career:null},
];
要把Career为空的装换为字符串 - -
我的方式是
Nullzhuan(data){
if(data == null){
return "- -";
}else{
return data;
}
}
let _this = this;
myData.map(item=>{
item.name = _this.Nullzhuan(item.name);
item.age= _this.Nullzhuan(item.age);
item.Career = _this.Nullzhuan(item.Career);
})
我感觉我这个太麻烦了,有什么什么更简单的方式呢?
版本1:
版本2(恶魔版本):
版本3(版本2改良):
涉及
map
、Object.keys()
、reduce
、...
展开、动态key
、||
门取值、箭头函数...说明(基于版本3):
Object.keys
可以获取一个对象的key
:js
中的||
不是返回bool
,而是返回一个值,0||12
返回12
,并且有短路性质,true||false
返回true
,关于js
中的&&
和||
有很多文章,可以看其他文章,这里d[k1]||'- -'
,就是在d[k1]
为假的时候,使用- -
做为值动态
key
,对象的key
可以使用变量代替...
展开符,可以将属性展开,并且用在对象中还会合并相同key
的值,比如这里的age
,放在后面的替代了前面的reduce
的用处也有非常多,这里用到的是上面的展开+合并对象map
映射先从一个数据开始
然后改造成数组映射就好了
以上都是
es6
的基础,但是不推荐写这么复杂的代码,对维护不大友好,除非封装和文档都非常美丽。至于思想,就得用到数据流的思想了,一个数据就像一个水流一样,经过每一道工序,变成另一种形式的数据,一直到最后一道工序,变成你想要的数据,就叫做数据清洗吧!