Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   помещение элементов в массив из объекта (https://javascript.ru/forum/misc/62259-pomeshhenie-ehlementov-v-massiv-iz-obekta.html)

рони 02.04.2016 22:08

protoquest,
а что такое
Цитата:

Сообщение от protoquest
ТСО

?

gazman 02.04.2016 22:20

Рони, мне понравилось Ваше элегантное решение. Только я пока не догоняю некоторые моменты. вот я сам сделал. может, конечно, огород
function listToArray(obj)
{	
	var rez = new Array;
	function addToArr(list)
	{
		if (list.rest != null)
		{
			rez.push(list.value);
			list = list.rest;
			addToArr(list);
		}
		else
		{
			rez.push(list.value);
		}
	}
	addToArr(obj);
	return rez;
}

a ={value:5, rest:{value:10, rest:{value:15, rest: {value: 30, rest: null}}}};

alert(listToArray(a));

рони 02.04.2016 22:25

gazman,
может убрать 9 строку?

protoquest 02.04.2016 22:32

рони,
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря.

gazman 02.04.2016 22:33

зачем? так не работает. нужно же делать рекурсию и присваивать функции addToArr() новый объект для обработки.

рони 02.04.2016 23:42

Цитата:

Сообщение от protoquest
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря.

не понимаю.

рони 02.04.2016 23:44

Цитата:

Сообщение от gazman
так не работает.

:-?
function listToArray(obj)
{
	var rez = new Array;
	function addToArr(list)
	{
		if (list.rest != null)
		{
			rez.push(list.value);
			addToArr(list.rest);
		}
		else
		{
			rez.push(list.value);
		}
	}
	addToArr(obj);
	return rez;
}

a ={value:5, rest:{value:10, rest:{value:15, rest: {value: 30, rest: null}}}};

alert(listToArray(a));


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