Как из строки получить обьект?
Как превратить строку в обьект:
строку 'a.b.c.d' в обьект {a: {b: {c: 'd'}}} ? |
для чего это??
можно так:
var str = '{"a": {"b": {"c": "d"}}}';
console.log(JSON.parse(str));
|
function StringToObject(str)
{
var a = '"}';
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 |
а еще можно так:
var str = 'a.b.c.d';
var obj;
if (str == 'a.b.c.d')
obj = {a: {b: {c: 'd'}}};
console.log(obj);
:D |
function my_split(separator, str){
var exp = {};
arr = str.split(separator)
if( arr.length > 1 ){
first_val = arr[0];
str = str.substr(first_val.length+separator.length);
exp[ first_val ] = my_split(separator, str)
return exp;
} else {
return str;
}
}
str = 'a.b.c.d';
res = my_split('.', str);
|
как оперативно ух ты...
что то не работает.... подключить что то надо? задание такое тестовое... для этого надо =) <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Test 01</title> <script type="text/javascript" > function StringToObject(str){ var a = '"}'; 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') );</script> </head> <body > <canvas id="canvas" width="300" height="300"> Canvas not supported. </canvas> </body></html> |
function StringToObject(str)
{
var a = '"';
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') );
Во. |
что то до сих пор не работает(
пишет : Uncaught SyntaxError: Unexpected token } |
скорей всего не хватает кавычки.. или лишняя
|
function StringToObject(str)
{
var a = '"';
str = str.split('.');
for(var i=0; i<str.length; i++) a += '}';
console.log('{"'+str.join('":{"')+a);
}
console.log( StringToObject('a.b.c.d') );
посмотрите что выводит.. не хватает присвоения: {"a":{"b":{"c":{"d"}}}} должно быть хотя бы так: {"a":{"b":{"c":{"d": 1}}}} |
вы лучше скажите, для чего все эти гарадушки..
|
и как добавить это присвоение?)))
|
просто такое задание и есть
есть строка 'a.b.c.d' превратить ее в обьект {a: {b: {c: 'd'}}} |
Цитата:
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 |
понял только с еденичкой будет работать..
|
Цитата:
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]+'"}}}');
|
: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));// для проверки
|
Учитесь, шпана )
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'ов, никаких регулярок и прочей фигни :) |
danik.js, хрень :D
С Eval'ом круче :) |
Ruslan_xDD, завидуй молча )
|
danik.js, ок :D
|
оооо спасибо всем за столько решений мне последнее импонирует больше всего...))
я правильно понимаю reduceright после сплита берет на каждом шаге последние 2 элемента массива начиная справа и выполняет callback функцию в которой создается обьект o и его свойству b ставится значение a... |
|
| Часовой пояс GMT +3, время: 02:18. |