ecmascript有兩個特殊的全域性變數:math & jsonjsonnullliteral本文主要詳解json
jsonbooleanliteral
jsonobject
jsonarray
jsonstring
jsonnumber
三個引數:
1. json物件,接收的值是json物件包括除了function之外的所有型別
2. 處理函式或者陣列,處理函式是對每乙個鍵值對都處理,陣列是只過濾留下陣列包含的鍵值,處理函式可以為null
3. space代表縮排字元,如果是number最大不能超過10,如果是字串就是縮排的字串
結果:json字串
有replacer引數的話,返回過濾後的結果,否則返回原生的字串
過程:將json-->json字串
接收的是json字串,將其格式化為json物件
兩個引數:
1. 加單引號的json字串
2. 過濾函式
結果:得到格式化的json物件
可見,當值是function時會返回undefined,這個有些情況下並不是我們期望的,那麼怎麼解決呢,要善於利用第二個引數即replacer為函式時(詳解見下面)
// 定義第二個引數為函式,引數需要key&value
function replace (key,value)
return value;
}// 定義乙個變數test,某一鍵值對的值為fn
var test = };
// 呼叫
json.stringify(test,replace);
// 結果:
// ""}"
第二個引數除了可以是function之外還可以是陣列[string,number型別的元素],相當於乙個ip白名單;
var test = ;
json.stringify(test,["a"]);
// ""
第二個引數還可以是null,或者不寫,會執行json.stringify
var test = ;
json.stringify(test,null);
// ""
json.stringify(test);
// ""
第三個引數space
如果space引數為string型別的情況下,則預設取string的前10個字元作為分割符
如果space引數為number型別的情況下,則表示space個空格(space<=10,大於10取10)
//space引數為string的情況下:
var test = ;
json.stringify(test,null,'test')
/**/
//space引數為number的情況下:
var test = ;
json.stringify(test,null,4)
/*
三個引數共同控制,將多層巢狀的json物件轉換為格式化的美化的json string
// 定義第二個引數為函式,引數需要key&value
function replace (key,value)
return value;
}// 定義乙個變數test,某一鍵值對的值為fn
var test = };
// 呼叫
json.stringify(test,replace,4);
// 結果:
/*""
}"*/
兩個引數,1json字串,2replacer function
陣列去重最妙的方法
function replacer(key, value)
return value;
}function unique(arr) ,
re = ;
for (var i = 0, length = arr.length; i < length; i++)
} return re;
}unique([function a ()]);
console.log(unique([1,'1', 1]));
console.log(unique([1,1,5,6,5,78,5,3]));
console.log(unique([1,'1',false,'false',[1,2,3],[1,2],,,]));
console.log(json.stringify(false));
console.log(json.stringify('false'));
前端面試準備(js)
1 1 使用字串函式 或者寫做 function reversestring2 str 1 2 使用for迴圈 function reversestring3 str return newarray 1 3 使用遞迴 function reversestring4 str else 2 1 使用sp...
前端面試題 Object物件方法
一.object 方法 鏈結1 1.for in 和object.keys 都是用來迴圈物件的,二者有什麼區別?1.object.keys obj 返回乙個由物件obj的key組成的陣列 name age 2.for item in obj 無返回值2.設定物件obj的name屬性為不可列舉?利用o...
前端面試之BFC
它是頁面中的一塊渲染區域,有一套渲染規則,決定了其子元素如何布局,以及和其他元素之間的關係和作用。滿足下列條件之一就可觸發bfc 根元素,即html元素 float的值不為none overflow的值不為visible display的值為inline block table cell table...