Я хочу создать объект 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“
…
Цель состоит в том, чтобы получить доступ к переменной с индексом и значением переменной.
Спасибо за вашу помощь!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это
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.info(obj)О, спасибо! Но сейчас я слишком глуп, чтобы получить доступ к ценностям. alert (obj ["Medium"] [1]) результат - "undefined"
Этот журнал выводит без проблем: console.info(obj["Medium"][1]);. посмотрите codepen.io/anon/pen/RyNgvG @ InFlames82
Попробуйте (строка в 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.info("MT[1] = ", MT[1] );
console.info("Medium[1] = ", Medium[1] );
console.info("Medium[2] = ", Medium[2] );
console.info("Medium[3] = ", Medium[3] );
console.info("Medium[4] = ", Medium[4] );
console.info("bar[1] = ", bar[1] );
Вы разделяете строку, которая вернет строку, а не массив, вам нужен JsonParser, чтобы делать то, что вы хотите, или кодировать свой собственный