Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запись массива в объект (https://javascript.ru/forum/misc/64827-zapis-massiva-v-obekt.html)

Bond 07.09.2016 23:18

Запись массива в объект
 
Всем привет!
Есть задачка которую вроде решил но требуется консультация или может исправление велосипеда.
Вопрос вот в чем. Делаю модуль для перевода свойств объекта на Node.js с использованием переводчика Яндекс.API.
Нужно что бы он переводил произвольный объект с переменным количеством и разными именам свойств.
Так как яша переводит или текст или массив решил сделать так - модуль принимает два параметра - объект с пустыми свойствами (он только задает какая должна быть структура) и массив который нужно перевести. Также при использовании этого модуля должно соблюдаться условие что количество свойств объекта должно быть равно длине массива. После перевода записываю массив в объект и возвращаю уже заполненный объект.
Вот псевдокод без Node плюшек
//Задаю структуру объекта который должен возвратить модуль
var myJson = {
			myvar: "",
			body: "",
			text: ""
		}
//массив который нужно перевести
		var myArr = [
			"string-var",
			"string-body",
			"string-text"
		]
		//Сам псевдомодуль в виде функции
		function translate(arr, obj){
			//Сначала перводим arr  одним запросом GET с помощью NODE модуля request
//потом переписываем наш объект 
			var i = 0;
			for(key in obj){
				obj[key] = arr[i];
				i++;
			}
			return obj;
		}
//Тестируем работу
		var tr = translate(myArr, myJson);
		alert(tr.myvar + "\n" + tr.body + "\n" + tr.text)

Как то так, но есть вопрос - не говнокод ли это? Может лучше было бы передавать в модуль только объект а уже внутри разбирать его на массив, переводить и назад собирать (может быть это даже приоритетный вариант - только сейчас придумал :) - но тогда будет слишком много циклов - а сделать все в одном не варинат - слишком много запросов GET будет к яше)? Или может есть другие решения?

Bond 07.09.2016 23:29

Хотя если передавать в модуль только объект не будет циклов слишком много - просто вместо одного будет два цикла. Пока что этот вариант более приоритетный потому как текущий - слишком геморно будет использовать этот модуль - придется при вызове формировать и объект и массив и еще следить что бы они были одинаковой длины и не перепутались значения.


Часовой пояс GMT +3, время: 09:14.