Как сформировать объект из строк 'object.foo.bar.test.prop' и 'someProp123'?

Как получить из строки 'object.foo.bar.test.prop' объект в виде

object = {
  foo: {
    bar: {
      test: {
        prop: 'someProp123'
      }
    }
  }
}
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
alekstar79
@alekstar79
Можно элегантнее, короче и проще:
let entity = 'object.foo.bar.test.prop',
	value = 'someProp123',
	data;

let obj = entity
 	.split('.')
 	.reverse()
 	.forEach(key => {
            data = [];
            data[key] = value;
            value = data;
 	})
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
var test = {
    foo: {
        bar: {
            test: {
                prop: 'someProp123'
            }
        }
    }
};

objectPath(test, 'foo.bar.test.prop'); //> "someProp123"

objectPath(test, 'foo.bar.test'); //> { prop: "someProp123" }

function objectPath(object, key, value) {
    var path = key.split('.');
    var get = function (collection, start) {
        return collection.reduce(function (previous, current) {
            return previous[current];
        }, start);
    };
    if (value) {
        var way = path.pop();
        get(path, object)[way] = value;
        return object;
    } else {
        return get(path, object);
    }
}


Источник
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы