JSON.stringify() 方法用於將 JavaScript 值轉換為 JSON 字符串。
語法: JSON.stringify(value[, replacer[, space]])
參數: value: 必需, 要轉換的 JavaScript 值(通常為對象或數組)。 replacer: 可選。用於轉換結果的函數或數組。 如果 replacer 為函數,則 JSON.stringify 將調用該函數,並傳入每個成員的鍵和值。使用返回值而不是原始值。如果此函數返回 undefined,則排除成員。根對象的鍵是一個空字符串:""。 如果 replacer 是一個數組,則僅轉換該數組中具有鍵值的成員。成員的轉換順序與鍵在數組中的順序一樣。 space: 可選,文本添加縮進、空格和換行符,如果 space 是一個數字,則返回值文本在每個級別縮進指定數目的空格,如果 space 大於 10,則文本縮進 10 個空格。space 也可以使用非數字,如:\t。
JSON.stringify()與JSON.parse()的區別
JSON.stringify()的作用是將 JavaScript 對象轉換為 JSON 字符串,而JSON.parse()正好相反,可以將JSON字符串轉為一個對象。
JSON.stringify()的妙用
1.用來調試對象
控制台直接輸出對象可能得不到我們想要的結果
const user = { "name" : "張三", "age" : 18 } console.log(user); [object Object]
因為從對象到字符串的默認轉換是“[objectObject]”
因此,我們使用 JSON.stringify()先將對象轉換為字符串,然后把結果輸入 console 控制台
const user = { "name" : "張三", "age" : 18 } console.log(JSON.stringify(user)); // "{ "name" : "張三", "age" :18 }"
2.存儲 localStorage 對象
一些時候,你想存儲用戶創建的一個對象,並且,即使在瀏覽器被關閉后仍能恢復該對象。下面的例子是 JSON.stringify
適用於這種情形的一個樣板:
// 創建一個示例數據 var session = { 'screens' : [], 'state' : true }; session.screens.push({"name":"screenA", "width":450, "height":250}); session.screens.push({"name":"screenB", "width":650, "height":350}); session.screens.push({"name":"screenC", "width":750, "height":120}); session.screens.push({"name":"screenD", "width":250, "height":60}); session.screens.push({"name":"screenE", "width":390, "height":120}); session.screens.push({"name":"screenF", "width":1240, "height":650}); // 使用 JSON.stringify 轉換為 JSON 字符串 // 然后使用 localStorage 保存在 session 名稱里 localStorage.setItem('session', JSON.stringify(session)); // 然后是如何轉換通過 JSON.stringify 生成的字符串,該字符串以 JSON 格式保存在 localStorage 里 var restoredSession = JSON.parse(localStorage.getItem('session')); // 現在 restoredSession 包含了保存在 localStorage 里的對象 console.log(restoredSession);
3.數組去重
function unique(arr) { let unique = {}; arr.forEach(function(item) { //調整屬性順序 var newData = {}; Object.keys(item).sort().map(key = >{ newData[key] = item[key] }) unique[JSON.stringify(newData)] = item; //鍵名不會重復 }) arr = Object.keys(unique).map(function(u) { //Object.keys()返回對象的所有鍵值組成的數組,map方法是一個遍歷方法,返回遍歷結果組成的數組.將unique對象的鍵名還原成對象數組 return JSON.parse(u); }) return arr; }
4.實現深拷貝
//深拷貝 function deepClone(data) { let _data = JSON.stringify(data), dataClone = JSON.parse(_data); return dataClone; };
5.判斷數組是否包含某對象,或者判斷對象是否相等
//判斷數組是否包含某對象 let data = [ {name:'echo'}, {name:'前端開發博客'}, {name:'張三'}, ], val = {name:'張三'}; JSON.stringify(data).indexOf(JSON.stringify(val)) !== -1;//true //判斷兩數組/對象是否相等 let a = [1,2,3], b = [1,2,3]; JSON.stringify(a) === JSON.stringify(b);//true
暫時就是這些了~