Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как из строки получить обьект? (https://javascript.ru/forum/misc/39867-kak-iz-stroki-poluchit-obekt.html)

skrudjmakdak 15.07.2013 12:33

вы лучше скажите, для чего все эти гарадушки..

linklee 15.07.2013 12:38

и как добавить это присвоение?)))

linklee 15.07.2013 12:40

просто такое задание и есть
есть строка 'a.b.c.d' превратить ее в обьект {a: {b: {c: 'd'}}}

ruslan_mart 15.07.2013 12:42

Цитата:

Сообщение от skrudjmakdak
должно быть хотя бы так:
{"a":{"b":{"c":{"d": 1}}}}

function StringToObject(str)
{
    var a = '":1';
    str = str.split('.');
    for(var i=0; i<str.length; i++) a += '}';
    return JSON.parse('{"'+str.join('":{"')+a); 
}

console.log( StringToObject('a.b.c.d') );


:D

linklee 15.07.2013 12:46

понял только с еденичкой будет работать..

ruslan_mart 15.07.2013 12:52

Цитата:

Сообщение от linklee
просто такое задание и есть
есть строка 'a.b.c.d' превратить ее в обьект {a: {b: {c: 'd'}}}

Оу, ну тогда вообще:

var str = 'a.b.c.d';

var obj = str.replace(/(a)\.(b)\.(c)\.(d)/, function()
{
    var a = arguments;
    return eval('{'+a[1]+':{'+a[2]+':{'+a[3]+':"'+[a[4]+'"}}}');
});

Или:
var str = 'a.b.c.d';
str = str.split('.');
var obj = eval('{'+str.[1]+':{'+str.[2]+':{'+str.[3]+':"'+[str.[4]+'"}}}');

рони 15.07.2013 13:21

:write:
var str = 'a.b.c.d';
str = str.replace(/([^.]+)$/,'"$1"');
str_plus = Array(str.split('.').length).join('}');
str += str_plus;
str = str.replace(/([^.]+)\./g ,'{"$1":');
var data = JSON.parse(str);
alert(JSON.stringify(data));// для проверки

danik.js 15.07.2013 13:25

Учитесь, шпана )

var str = 'a.b.c.d';
var o = str.split('.').reduceRight(function(a, b){var o = {}; o[b] = a; return o;});

alert(JSON.stringify(o));


Никаких eval'ов, никаких регулярок и прочей фигни :)

ruslan_mart 15.07.2013 14:02

danik.js, хрень :D
С Eval'ом круче :)

danik.js 15.07.2013 14:03

Ruslan_xDD, завидуй молча )


Часовой пояс GMT +3, время: 12:00.