Подскажите пожалусто как можно реализовать переобразование из одно мерного обекта в многомерный
{
'key1.key2.key3':'test',
'key1.key3':'value'
}
в такое
{
key1:{
key2:{
key3:'test'
},
key3:'value'
}
}
такое делает nconf модуль npm только с 'key1:key2' на nodejs как повторить его возможности?
Наверное первым делом стоит получить оба объекта из массива:
function parse(key, value) {
var split = key.split(".");
var object = {};
//object[split[0]] = (split.length > 1) ? parse(split.slice(1).join("."), value) : value;
if(split.length > 1) {
object[split[0]] = parse(split.slice(1).join("."), value);
}
else {
object[split[0]] = value;
}
return object;
}
var json = {
'key1.key2.key3':'test',
'key1.key3':'value'
};
for(var key in json) {
console.log(parse(key, json[key]));
}
А дальше скрестить объекты
var json = {
'key1.key2.key3':'test',
'key1.key3':'value'
};
var objectMerge = [];
for(var key in json) {
objectMerge.push(parse(key, json[key]));
}
console.log(merge(...objectMerge));
function merge() {
var object = {};
for(var i=0; i < arguments.length; i++) {
for(var key in arguments[i]) {
if(typeof arguments[i][key] == "string") {
object[key] = arguments[i][key];
}
else {
object[key] = Object.assign({}, object[key], merge(arguments[i][key]));
}
}
}
return object;
}
function parse(key, value) {
var split = key.split(".");
var object = {};
//object[split[0]] = (split.length > 1) ? parse(split.slice(1).join("."), value) : value;
if(split.length > 1) {
object[split[0]] = parse(split.slice(1).join("."), value);
}
else {
object[split[0]] = value;
}
return object;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ширина td должна быть равна ширине(высота)InputКак это реализовать? Это что то похожее на электронный журнал
На данный вопрос уже ответили: