第二个参数的问题:当第一个参数是对象,第二个参数是函数的时候,应当注意:
函数内的参数必须用(key,value)的键值对,并且,必须出现对应的key才能对该value进行操作。否则无法指明是哪个value的key。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p id="demo"></p>
<script>
var testObj = {
name:"张三",
age:28,
gender:"man"
};
//$("#objTest").text(JSON.stringify(testObj,testReplacer));
var testArr = [{
name:"ss",
age:'s',
gender:"gril"
},
{
name:"ss",
age:'s',
gender:"gril"
}]
var ss=JSON.stringify(testArr,testReplacer);
function testReplacer(key,value){//key为对象属性名,value为对象属性值,会遍历testObj或testArr来执行该函数
if(key==="name"||key==="age"){
value = value.toUpperCase();
}
return value;
}
document.write( "使用参数情况:" );
document.write( "<br>" );
document.write("<pre>" + ss + "</pre>" ); // pre 用于格式化输出
</script>
</body>
</html>
如果第一个参数是数组,第二个是函数,可以不针对key来改变value
但是无法识别出是哪个数组内元素是String类型。
<script>
var testArr = ["abc","bcd"];
var ss=JSON.stringify(testArr,testReplacer);
function testReplacer(key,value){//key为对象属性名,value为对象属性值,会遍历testObj或testArr来执行该函数
return value.toString().toUpperCase();
}
document.write( "使用参数情况:" );
document.write( "<br>" );
document.write("<pre>" + ss + "</pre>" ); // pre 用于格式化输出