JSON.stringify
JSON.stringify(value[, replacer [, space]])
參數(shù):
value:將要被序列化的變量的值枫夺。
-
replacer:替代器⊙可以是函數(shù)或者是數(shù)組冬殃。
函數(shù)時(shí):value 每個(gè)屬性都要經(jīng)過這個(gè)函數(shù)的處理霎烙,該函數(shù)的返回值就是最后被序列化后的值碑韵。
數(shù)組時(shí):要求該數(shù)組的元素是字符串赡茸,且這些元素會(huì)被當(dāng)做 value 的鍵(key)進(jìn)行匹配,最后序列化的結(jié)果祝闻,是只包含該數(shù)組每個(gè)元素為 key 的值占卧。
space:指定輸出數(shù)值的代碼縮進(jìn),美化格式之用联喘,可以是數(shù)字(<= 10)或者字符串华蜒。
eg:
// 使用“函數(shù)”當(dāng)替代器
function replacer(key, value) {
if (typeof value === "string") { // value 為字符串的不返回
return undefined;
}
return value;
}
var foo = {
foundation: "Mozilla",
model: "box",
week: 45,
transport: "car",
month: 7
};
var jsonString = JSON.stringify(foo, replacer);
// {"week":45,"month":7}
// 使用“數(shù)組”當(dāng)替代器
const user = {
name: 'zollero',
nick: 'z',
skills: ['JavaScript', 'CSS', 'HTML5']
};
JSON.stringify(user, ['name', 'skills'], 2); // 僅僅匹配key值為'name'、'skills'的值
// "{
// "name": "zollero",
// "skills": [
// "JavaScript",
// "CSS",
// "HTML5"
// ]
// }"
****注意****
如果一個(gè)對(duì)象有 toJSON 屬性豁遭,當(dāng)它被序列化的時(shí)候叭喜,不會(huì)對(duì)該對(duì)象進(jìn)行序列化,而是將它的toJSON 方法的返回值進(jìn)行序列化蓖谢。
eg:
var obj = {
foo: 'foo',
toJSON: function () {
return 'bar';
}
};
JSON.stringify(obj); // '"bar"'
JSON.stringify({x: obj}); // '{"x":"bar"}'
用 Set 來實(shí)現(xiàn)數(shù)組去重
Set 和 ...(拓展運(yùn)算符)可以很簡單的進(jìn)行數(shù)組去重捂蕴。
eg:
const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);
//=> [42, "foo", true]
函數(shù)參數(shù)值校驗(yàn)
通過 ES6 中為函數(shù)增加參數(shù)默認(rèn)值的特性來做函數(shù)參數(shù)值的校驗(yàn)
eg:
function fix(a = require()) {
console.log('a', a)
}
function require() {
throw new Error('缺少了參數(shù) a')
}
fix(1);
// a 1
fix();
// Uncaught Error: 缺少了參數(shù) a
用解構(gòu)賦值過濾對(duì)象屬性
使用 ES6 中的 解構(gòu)賦值 和 拓展運(yùn)算符 的特性來過濾屬性
eg:
// 我們想過濾掉對(duì)象 types 中的 inner 和 outer 屬性
const { inner, outer, ...restProps } = {
inner: 'This is inner',
outer: 'This is outer',
v1: '1',
v2: '2',
v4: '3'
};
console.log(restProps);
// { v1: "1", v2: "2", v4: "3" }
Object.is
ES6 中提供了一個(gè)新的方法:Object.is(),它具有 === 的一些特點(diǎn)蜈抓,而且更好启绰、更準(zhǔn)確昂儒。