在javascript中将十进制数转换为百分比

在javascript中将十进制数转换为百分比,javascript,percentage,Javascript,Percentage,我编写了返回json的代码,示例如下: [ { "id": "12345", "header": "<a class=\"card-link\" href=\"http://www.google.com\" target=\"_blank\"> 12345</a>- solved-1", "title": "Training Summary Report", "description": "", "link": "",

我编写了返回json的代码,示例如下:

[
  {
    "id": "12345",
    "header": "<a class=\"card-link\" href=\"http://www.google.com\" target=\"_blank\"> 12345</a>- solved-1",
    "title": "Training Summary Report",
    "description": "",
    "link": "",
    "labels": [
      {
        "filter": "type",
        "value": "course 1"
      },
      {
        "filter": "Subject",
        "value": "Sub. 1239"
      },
      {
        "filter": "Idea",
        "value": "Idea . 53"
      }
    ]
  }

    {
    "id": "12345",
    "header": "<a class=\"card-link\" href=\"http://www.google.com\" target=\"_blank\"> 12345</a>- solved-1",
    "title": "Training Summary Report",
    "description": "",
    "link": "",
    "labels": [
      {
        "filter": "type",
        "value": "course 1"
      },
      {
        "filter": "Subject",
        "value": "Sub. 1239"
      },
      {
        "filter": "Idea",
        "value": "Idea . 53-34-98:0.0045, 98-11-00:0.09856, 44-22-88:0.09875, 22-98-90:0.3245"
      }
    ]
  }
]
结果是:

{
    "id": "12345",
    "header": "<a class=\"card-link\" href=\"http://www.google.com\" target=\"_blank\"> 12345</a>- solved-1",
    "title": "Training Summary Report",
    "description": "",
    "link": "",
    "labels": [
      {
        "filter": "type",
        "value": "course 1"
      },
      {
        "filter": "Subject",
        "value": "Sub. 1239"
      },
      {
        "filter": "Idea",
        "value": "Idea . 53-34-98:0,45%, 98-11-00:9.8%, 44-22-88:9.875%, 22-98-90:32%"
      }
    ]
  }
最终矩阵列数据集示例:

53-34-98:0.0045, 98-11-00:0.09856, 44-22-88:0.09875, 22-98-90:0.3245
有人可以帮我修改代码,把十进制数转换成百分比吗?
谢谢

您可以首先拆分包含数据的字符串(
queryResult.final_Matrix[index]
)以分别获得每个部分,然后,对于每个部分,使用
“:”
再次拆分并应用一些数学(乘以100)以获得百分比:

let input=“53-34-98:0.0045,98-11-00:0.09856,44-22-88:0.09875,22-98-90:0.3245”;
let times=input.split(“,”);
常量结果=[];
times.forEach((elem)=>
{
常量tempArr=元素拆分(“:”);
结果.推送(tempArr[0]+“:”+(数学轮((tempArr[1]*100)*100)/100)+“%”;
});
让finalResult=result.join(“,”);

控制台日志(最终结果)您可以循环,根据字符串进行拆分,减少标记数组(那些由逗号分隔的标记,
),最后使用转换后的百分比值重新生成标记

let arr=[{“id”:“12345”,“header”:“-solved-1”,“title”:“培训总结报告”,“description”:“link”:“labels”:[{“filter”:“type”,“value”:“course 1”},{“filter”:“Sub.1239”},{“filter”:“Idea”,“value”:“Idea.53”}、{“id”:“12345”、“标题”:“-solved-1”、“标题”:“培训总结报告”、“说明”:“链接”:“标签”:[{“过滤器”:“类型”、“值”:“课程1”}、{“过滤器”:“主题”、“值”:“Sub.1239”}、{“过滤器”:“理念”,”值“:“Idea.53-34-98:0.0045,98-11-00:0.09856,44-22-88:0.09875,22-98-90:0.3245”}];
arr.forEach({labels})=>{
labels.forEach(label=>{
让[x,value]=label.value.split(“Idea”);
如果(值){
label.value=“Idea.”+value.split(“,”).reduce((a,t)=>{
让[str,perc]=t.split(“:”);
if(perc)str+=“:”+(Number(perc.trim())*100).toFixed(2)+“%”
返回a.concat(str);
},[])。join();
}
});
});
console.log(arr);

.as控制台包装{max height:100%!important;top:0;}
下面是使用string
split
join
方法进行的对象转换

const convert=item=>{
常量标签=item.labels.map(标签=>{
if(label.value.includes(“Idea”)){
返回{
标签
值:label.value
.拆分(“,”)
.map(val=>{
常量strs=val.split(“:”);
const last=strs.pop();
strs.push(`${Math.round(数字(最后)*100*100)/100}%`);
返回strs.join(“:”);
})
.join(“,”)
};
}否则{
返回{…标签};
}
});
返回{
项目
标签
};
};
常数arr=[
{
身份证号码:“12345”,
标题:
“-1”,
标题:“培训总结报告”,
说明:“,
链接:“,
标签:[
{
过滤器:“类型”,
值:“课程1”
},
{
过滤器:“主题”,
价值:“第1239款”
},
{
过滤:“创意”,
价值观:“理念53”
}
]
},
{
身份证号码:“12345”,
标题:
“-1”,
标题:“培训总结报告”,
说明:“,
链接:“,
标签:[
{
过滤器:“类型”,
值:“课程1”
},
{
过滤器:“主题”,
价值:“第1239款”
},
{
过滤:“创意”,
价值:
“想法。53-34-98:0.0045,98-11-00:0.09856,44-22-88:0.09875,22-98-90:0.3245”
}
]
}
];
console.log(arr.map(convert));
1)循环到原始数据
2) 在键“label”上,使用“filter”==“Idea”搜索数组
3) 执行拆分和联接以转换

data=[{...'label':{'filter':'Idea'...}...},{}];

var labels=[],valueInd=[],value=[],div2=[];
data.map((element)=>{
  labels = element.labels;
  valueInd=labels.findIndex(elem=>elem.filter==='Idea');
  value=labels[valueInd].value;
  value=value.split(' . ')[0]+ ' . '+value.split(' . ')[1].split(',').map((elem)=>{
          var div2=elem.split(':');
         return div2.length>1?div2[0]+':'+(Number(div2[1])*100).toFixed(2)+'%':div2[0];
  }).join(',');
  labels[valueInd].value=value;
});

console.log(data);


您需要做两件事,首先将值拆分为几个值,例如,您得到53-34-98:0.0045,因此您将其拆分为两个变量53-34-98和0.0045,然后,您所追求的值是0.0045(第二个变量)*100,然后添加以下字符“%”。如果单个初始变量收到多个值,则使用“,”来拆分它们。我想您的意思是
53-34-98:0.45%
,而不是
53-34-98:0,45%
,对吗?
53-34-98:0.0045, 98-11-00:0.09856, 44-22-88:0.09875, 22-98-90:0.3245
data=[{...'label':{'filter':'Idea'...}...},{}];

var labels=[],valueInd=[],value=[],div2=[];
data.map((element)=>{
  labels = element.labels;
  valueInd=labels.findIndex(elem=>elem.filter==='Idea');
  value=labels[valueInd].value;
  value=value.split(' . ')[0]+ ' . '+value.split(' . ')[1].split(',').map((elem)=>{
          var div2=elem.split(':');
         return div2.length>1?div2[0]+':'+(Number(div2[1])*100).toFixed(2)+'%':div2[0];
  }).join(',');
  labels[valueInd].value=value;
});

console.log(data);