如何在Javascript中将字符串数组转换为JSON数组?

如何在Javascript中将字符串数组转换为JSON数组?,javascript,json,Javascript,Json,我有如下字符串数组: "[totRev=248634.29858677526, totEBITDA=34904.9893085068, EBITDA_Operating_Cash_Flow_Margin=0.140386863387, debt_Service_Coverage_Ratio=16.7793849967, gross_Debt_to_EBITDA=0.3626422278, gross_Debt=50632.09233331651, cash_Available_for_Debt=

我有如下字符串数组:

"[totRev=248634.29858677526, totEBITDA=34904.9893085068, EBITDA_Operating_Cash_Flow_Margin=0.140386863387, debt_Service_Coverage_Ratio=16.7793849967, gross_Debt_to_EBITDA=0.3626422278, gross_Debt=50632.09233331651, cash_Available_for_Debt=102746.09168349924, debt_Servicing_Amount=6123.352655871018]"
如何将其转换为JSON数组或类似JSON的JSON对象

{totRev:'248634.29858677526',....etc} 

使用
子字符串
拆分
减少

str.substring( 1,str.length - 1 ) //remove [ and ] from the string
    .split(",") //split by ,
    .reduce( (a,b) => (i = b.split("="), a[i[0]] = i[1], a ) , {} );
减少解释

  • =
    拆分
    b
    (数组中的元素,如
    totRev=248634.29858677526
  • 将数组中的第一项指定为
    a
    (累加器初始化为
    {}
    )的键,并将值指定为数组的第二项
  • 返回
    a
演示

var str=“[totRev=248634.29858677526,totEBITDA=34904.9893085068,息税折旧摊销前利润率(EBITDA)、营业利润率(U)、现金流量(U)、利润率(U=0.140386863387)、债务(U)偿付率(U=16.7793849967)、债务总额(U)与息税折旧摊销前利润率(EBITDA)之比(U=0.36264222878)、债务总额(U=50632.092333316651、债务可用现金(U)之比(U=102746.09168349924)、偿债金额(U=23.3571018]”;
var output=str.substring(1,str.length-1)。split(,“”)。reduce((a,b)=>(i=b.split(“”),a[i[0]。trim()]=i[1],a),{});

控制台日志(输出)一个单词。。小心点。。。注意,您期望的“对象”无效。。。似乎您希望对象像
{totRev:248634.29858677526,totEBITDA:34904.9893085068,…}
或者,作为JSON,
{“totRev”:248634.29858677526,“totEBITDA”:34904.9893085068,…}
-哦,没有
JSON数组这回事,除非您指的是JSON字符串数组,这与此完全无关
str.split('',')。reduce((p,c)=>{const parts=c.split('=');p[parts[0]=[arts[1];return p;]},{})
对不起,我在json对象中犯了错误,比如{totRev:248634.29858677526,}也没有JSON对象——JSON是javascript对象的字符串表示,但它不是object@DHARMENDRASINGH有一个输入错误。请在使用前阅读代码。:-p
=[arts[1]
应该是
=parts[1]
@guruvinder372,你能解释一下这个部分吗
(i=b.split(=”),a[i[0]=i[1],a),{})
?@guruvinder372这是一个很棒的优化解决方案。