Помогите решить в JS. (Решено)
Преобразовать заданный объект в новый объект, в котором ключи надо разбить на секции символом ".". Количество секций не ограничено. РЕШЕНО
Задан объект: var obj = { "database.host": "127.0.0.1", "database.user": "test", "database.password": "qwerty", "rest.photo.host": "127.0.0.2", "rest.users.host": "127.0.0.3", "rest.users.password": "p@ssw0rd", "baseUrl": "test.com", "limit": 10 }; |
Цитата:
|
var obj = { "database.host": "127.0.0.1", "database.user": "test", "database.password": "qwerty", "rest.photo.host": "127.0.0.2", "rest.users.host": "127.0.0.3", "rest.users.password": "p@ssw0rd", "baseUrl": "test.com", "limit": 10 }; var result = {}; Object.keys(obj).forEach(function (name) { var path = result, names = name.split("."), len = names.length; names.forEach(function (subName, index) { if (!path[subName]) { if (index == len - 1) { path[subName] = obj[name]; } else { path[subName] = {}; } } path = path[subName]; }); }); alert(JSON.stringify(result , "", 4)); |
Спасибо за помощь. Это задание совершенно сбило меня с толку
|
Цитата:
|
Помогите найти ошибку
Цитата:
var obj = { "database.host": "127.0.0.1", "database.user": "test", "database.password": "qwerty", "rest.photo.host": "127.0.0.2", "rest.users.host": "127.0.0.3", "rest.users.password": "p@ssw0rd", "baseUrl": "test.com", "limit": 10 }; var len; var names; var res; var result = {}; var keys = Object.keys(obj); function createObject (name) { res =result; names=name.split('.'); len=names.length; names.forEach (resultObject); }; for (var i=0;i<keys.length;i++) { var arr =[]; arr[0]=keys[i]; arr.forEach(createObject); } function resultObject (subName, index) {console.log(index+'-'+subName); if (!res[subName]) { if (index == len-1) { res[subName] = obj[keys]; } else { res[subName] = {}; } } res = res[subName]; }; alert (JSON.stringify(result , "", 4));[/quote] |
xdarkV,
Вот вам ваш исправленный вариант: var len; var names; var res; var result = {}; var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { var arr = []; createObject(keys[i]); } function createObject(name) { res = result; names = name.split('.'); len = names.length; names.forEach(resultObject); } function resultObject(subName, index) { if (!res[subName]) { if (index == len - 1) { res[subName] = obj[keys[i]]; } else { res[subName] = {}; } } res = res[subName]; } alert(JSON.stringify(result, "", 4)); |
Часовой пояс GMT +3, время: 15:13. |