Как преобразовать строку в объект?

438
16 июля 2017, 13:09

Как преобразовать строку

var str = "{lat:55.74755013048941, lng:37.63388156890869},{lat:55.746245766551574, lng:37.63336658477783},{lat:55.746789256825124, lng:37.63115644454956}"

в объект

obj:
    {
      lat:55.74755013048941,
      lng:37.63388156890869
    },
    {
      lat:55.746245766551574, 
      lng:37.63336658477783
    },
    {
      lat:55.746789256825124,
      lng:37.63115644454956
    }
Answer 1

var str = "{lat:55.74755013048941, lng:37.63388156890869},{lat:55.746245766551574, lng:37.63336658477783},{lat:55.746789256825124, lng:37.63115644454956}"; 
var a = eval('({obj:[' + str + ']})'); 
console.log(a);

Answer 2

String.prototype.replaceAll = function(search, replacement) { 
    var target = this; 
    return target.replace(new RegExp(search, 'g'), replacement); 
}; 
 
var str = "{lat:55.74755013048941, lng:37.63388156890869},{lat:55.746245766551574, lng:37.63336658477783},{lat:55.746789256825124, lng:37.63115644454956}"; 
str = str.replaceAll('lat', '"lat"'); 
str = str.replaceAll('lng', '"lng"'); 
var a = JSON.parse('{"obj":[' + str + ']}'); 
console.log(a);

Answer 3

var str = "{lat:55.74755013048941, lng:37.63388156890869},{lat:55.746245766551574, lng:37.63336658477783},{lat:55.746789256825124, lng:37.63115644454956}"; 
var items = []; 
 
var tokens = str.match(/{[^}]+}/g); 
for (var i = 0; i < tokens.length; i++) { 
    var segments = tokens[i].split(','); 
    var item = {}; 
    for (var j = 0; j < segments.length; j++) { 
        var pair = segments[j].replace(/{|}/, '').split(':'); 
        item[pair[0].trim()] = pair[1]; 
    } 
    items.push(item);     
} 
 
var obj = {obj: items}; 
console.log(obj);

READ ALSO
JS авто. замена текста в текстовом поле

JS авто. замена текста в текстовом поле

Здравствуйте я новичок в JS, не подскажите как реализовать такую идеюЕсть 1но поле для текста, 2 кнопки переключения раскладки иностранного...

552
Ссылка на объект js

Ссылка на объект js

Стандартный для таких случаев трюк - запомнить this в замыкании:

374