關於JSON.stringify()的用法
阿新 • • 發佈:2019-02-06
寫頁面的時候一直沒整明白為什麼嗎物件格式的要通過JSON.stringify()這個方法轉一下有什麼好處,最近看其它的部落格get到一些實用的技巧
第一種:在陣列中提取資料
var data = [{
name: "程咬金",
sex: "1",
age: 26
},
{
name: "程才",
sex: "0",
age: 20
},
{
name: "程新鬆" ,
sex: "1",
age: 22
},
{
name: "程功",
sex: "1",
age: 18
}
];
如果這裡我們只想提取name 和 sex
我們常用的方法可能是
var new_data = JSON.stringify(data,['name','sex']);
console.log(new_data);
輸出結果
[{"name":"程咬金","sex" :"1"},{"name":"程才","sex":"0"},{"name":"程新鬆","sex":"1"},{"name":"程功","sex":"1"}]
第二種用法:修改資料
例如我們要把sex為0改為女 sex為1改為男
var str_json = JSON.stringify(data,function(key,value){
if(key == 'sex'){
return ["女",'男'][value];
}
return value;
});
console.log(str_json);
輸出結果
[{"name":"程咬金","sex" :"男","age":26},{"name":"程才","sex":"女","age":20},{"name":"程新鬆","sex":"男","age":22},{"name":"程功","sex":"男","age":18}]
value的值是data中物件sex的值,而這個['女','男']陣列,是根據[value]的索引對應到[‘女’,‘男’],也就是說當value為0,[value]即為[0],對應到陣列['女','男']的索引0,值即為‘女’。比如我定義8--男,9--女;
var data =[
{
name: "程咬金",sex:"8",age:26
},
{
name: "程才",sex:"9",age:20
},
{
name: "程新鬆",sex:"8",age:22
},
{
name: "程功",sex:"8",age:18
}
];
/*回撥函式做一個對映關係*/
var str_json = JSON.stringify(data,function(key,value){
if(key == 'sex'){
return ['男','女'][value-8];
}
return value;
});
console.log(str_json);