我想从一个字符串创建一个JavaScript对象或Json,该字符串由; 分隔。 所以我可以在; 之后拆分字符串,之后我必须在:处拆分以创建变量名称和变量值。但是我该怎么做?
字符串:
"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"
结果必须如下所示:
MT[1] = “111”
Medium[1] = “AAA”
Medium[2]=”BBB”
Medium[3]=”BBB”
Medium[4]=”BBB”
bar[1]=“24“
…
目标是访问具有索引和变量值的变量。
感谢您的帮助!
答案 0 :(得分:0)
试试这个
var x = '"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"';
var obj = {};
var y = x.split(';');
y.forEach(function(itm){
var z = itm.split(':');
var key = z[0].split('[')[0].replace(/"/g, '');
if(!obj.hasOwnProperty(key)) {
obj[key] = [];
}
obj[key].push(z[1].replace(/"/g, ''));
})
console.log(obj)

答案 1 :(得分:0)
尝试(字符串s,r是结果对象-您可以通过更改地图参数中的b=r
来更改它)
s.split(";").map( (x,i,a,b=r,y=x.match(/"(.*?)"\[(.*?)]:"(.*)"/),v=b[y[1]]||[]) => {v[y[2]]=y[3];b[y[1]]=v} );
let s = '"MT"[1]:"111";"Medium"[1]:"AAA";"Medium"[2]:"BBB";"Medium"[3]:"CCC";"Medium"[4]:"DDD";"bar"[1]:"24";"bar"[2]:"1,5";"bar"[3]:"3";"bar"[4]:"7,5";"S_Id"[1]:"555";"S_Nr"[1]:"666"'
let r={} // result
s.split(";").map( (x,i,a,b=r,y=x.match(/"(.*?)"\[(.*?)]:"(.*)"/),v=b[y[1]]||[]) => {v[y[2]]=y[3];b[y[1]]=v} );
Object.assign(this, r) // copy fields from result to "this" (for direct access from JS)
console.log("MT[1] =", MT[1] );
console.log("Medium[1] =", Medium[1] );
console.log("Medium[2]=", Medium[2] );
console.log("Medium[3]=", Medium[3] );
console.log("Medium[4]=", Medium[4] );
console.log("bar[1]=", bar[1] );