一、JSON.stringify()
JSON.stringify(value[,replace[,space]]);
JSON.stringify()方法我们经常使用,第一参数value(将要被序列化的变量的值),这是我们最常用的,但是他还有两个参数replace及space我们很少用到。
replace: 替代器,可以是函数或者数组,如果是一个函数则value的每个属性都要经过函数处理。如果是数组,(数组的元素只能为字符串),则数组元素会被当做value的key进行匹配,最后只返回包含数组元素的为key的值。
space: 指定输出值的代码缩进,美化格式用。可以是数字或字符串。如果是数字(最大为10),代表缩进多少空格,如果是字符串(最多10个字符)将显示在每行代码之前。
例子1:
var obj = { a:1, b:2, c:3, d:4, e:5, f:6, e:7};
var jsonString1 = JSON.stringify(obj, ['a','c']);
var jsonString2 = JSON.stringify(obj, (key, value)=>{
if (value>4) return undefined;
return value;
});
输出结果为:

例子2:
var obj = { a:1, b:2, c:3, d:4, e:5, f:6, e:7 };
var jsonString1 = JSON.stringify(obj, ['a','c'], 5);
var jsonString2 = JSON.stringify(obj, ['a','c'], '->');
输出结果为:

由以上的例子可以看出,replace如何space两个参数可以过滤并序列化对象。
二、用Set 实现数组去重
直接上例子:
const removeItems = arr => [...new Set(arr)];
let newItems = removeItems(['11','22','11','22',true,true]);
执行结果为:

三、使用函数默认参数进行参数校验
es6中,函数增加参数默认值的特性。我们可以通过这个特性做函数参数的校验
例子:
function getAge(age=requireAge()) {
return age;
}
function requireAge() {
throw new Error('缺少了参数age');
}
let age1 = getAge();
输出结果为:

网友评论