@zerio

Как заполнить много полей oбъектa?

Здравствуйте, у меня есть let obj ={}
И мне нужно задать поля
obj.myFIeld.insertedFIeld.deepField.additional.value = "qwe"

все поля myFIeld, insertedFIeld, deepField, additional по умолчанию undfined,
какой самый лучшый способ установить
obj.myFIeld.insertedFIeld.deepField.additional.value = "qwe"
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Azperin
Дилетант
Lodash наверное будет проще, но можно и вручную способ придумать

Object.prototype.fancyMethodName = function(path, value) {
	let currentPath = this;
	const propNamesArray = path.split('.');
	const lastPropIndex = propNamesArray.length - 1;
	
	propNamesArray.forEach((propName, idx) => {
		if (idx >= lastPropIndex) {
			currentPath[propName] = value;
			return;
		};
		
		if (!currentPath.hasOwnProperty(propName)) {
			currentPath[propName] = {};
		};
		
		currentPath = currentPath[propName];
	});
};

let obj = {};
obj.fancyMethodName('a.b.c.d.e.f', 'some value' );
console.log(obj.a.b.c.d.e.f);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы