Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象';s属性_Javascript - Fatal编程技术网

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;
  }
})