protoquest,
а что такое Цитата:
|
Рони, мне понравилось Ваше элегантное решение. Только я пока не догоняю некоторые моменты. вот я сам сделал. может, конечно, огород
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)); |
gazman,
может убрать 9 строку? |
рони,
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря. |
зачем? так не работает. нужно же делать рекурсию и присваивать функции addToArr() новый объект для обработки.
|
Цитата:
|
Цитата:
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. |