Javascript 对象';s属性
嗨,我需要将对象的数值转换为字符串。但不同的属性有不同的转换规则 我的示例对象:Javascript 对象';s属性,javascript,Javascript,嗨,我需要将对象的数值转换为字符串。但不同的属性有不同的转换规则 我的示例对象: { name: "Name" sRatio: 1.45040404 otherMetric: 0.009993 } 我使用JSON.stringify转换初始对象 let replacemet = {} JSON.stringify(metrics[0], function (key, value) { //Iterate over keys for (let k in value) { if (
{
name: "Name"
sRatio: 1.45040404
otherMetric: 0.009993
}
我使用JSON.stringify
转换初始对象
let replacemet = {}
JSON.stringify(metrics[0], function (key, value) {
//Iterate over keys
for (let k in value) {
if ((k !== "sRatio") || (k !== "name")) {
replacemet[k] = (100*value[k]).toFixed(2) + "%"
} else {
if( k === "name") {
replacemet[k] = "yo!"+value[k]
} else{
replacemet[k] = value[k].toFixed(2)
}
}
}
})
但我的条件不会被触发,所有属性都以相同的方式转换 尝试使用开关块,这将是非常好的
replacer
回调函数的任务不是填充某个全局replacemet
对象,而是返回一个新值
我想你是在寻找类似于
JSON.stringify(sample, function (key, value) {
if (key == "sRatio") {
return value.toFixed(2);
} else if (key == "name") {
return "yo!"+value;
} else if (typeof value == "number") {
return (100*value).toFixed(2) + "%"
} else {
return value;
}
})
希望能帮助你。我添加了动态属性
度量=
[
{
姓名:“姓名”,
sRatio:1.45040404,
其他指标:0.009993
},
{
名称:“名称1”,
sRatio:2.45040404,
其他指标:1.009993
}
]
;
让source=JSON.stringify(度量);
让arrJson=new Array();
//arrJson={};
metrics.forEach(函数(值){
让replacemet={};
for(var k值){
if(k.toString().trim()=“name”){
replacemet[k]=“yo!”+值[k];
}
其他的
如果((k.toString().trim()!=“sRatio”)&&(k.toString().trim()!=“name”)){
replacemet[k]=(100*值[k]).toFixed(2).toString()+“%”;
}否则{
replacemet[k]=值[k].toFixed(2);
}
}
arrJson.push(JSON.stringify(replacemet));
});
log(arrJson)代码>如果((k!=“sRatio”)|(k!=“name”))
将始终为真。只要使用if(k==“name”){}else if(k==“sRatio”){}else{}
|
应该是&&
。请参见以错误的方式使用replacer
参数。它必须返回值,否则不包括属性。
JSON.stringify(sample, function (key, value) {
if (key == "sRatio") {
return value.toFixed(2);
} else if (key == "name") {
return "yo!"+value;
} else if (typeof value == "number") {
return (100*value).toFixed(2) + "%"
} else {
return value;
}
})