前端面試 js之object型別JSON

2021-09-14 07:56:58 字數 2566 閱讀 8167

ecmascript有兩個特殊的全域性變數:math & json

本文主要詳解json

jsonnullliteral

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...