Помогите решить в 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, время: 08:49. |