помещение элементов в массив из объекта
здравствуйте.
практикуюсь в js задача такая. есть объект. нужно его значения поместить в массив. у меня выводит массив в обратном порядке. 30, 15, 10, 5. а нужно наоборот - 5, 10, 15, 30. подскажите, что делаю неправильно function listToArray(obj) { var rez = new Array; if (obj.rest != null) { rez.push(obj.value); obj = obj.rest; listToArray(obj); } else { rez.push(obj.value); } document.write(rez); document.write("<br />"); } a ={value:5, rest:{value:10, rest:{value:15, rest: {value: 30, rest: null}}}}; listToArray(a); |
gazman,
function listToArray(obj) { if (obj.rest != null) { console.log(obj.value) rez.push(obj.value); obj = obj.rest; listToArray(obj); } else { rez.push(obj.value); } } var rez = new Array; a = { value: 5, rest: { value: 10, rest: { value: 15, rest: { value: 30, rest: null } } } }; listToArray(a); alert(rez); document.write(rez.join("<br>")); // |
:-?
function listToArray(obj) { return obj.rest ? [obj.value].concat(listToArray(obj.rest)) : [obj.value]; } a = { value: 5, rest: { value: 10, rest: { value: 15, rest: { value: 30, rest: null } } } }; alert(listToArray(a)); |
:-?
function listToArray(obj) { var rez = []; JSON.stringify(obj).replace(/\"value\":\d+/g, function (str) { rez.push(str.split(':')[1]) }); return rez; } var a = { value : 5, rest: { value : 10, rest: { value: 15, rest: { value: 30, rest: null } } } }; alert(listToArray(a)) |
destus,
что быстрее парсить или рекурсия? :) |
Для такого небольшого объекта в принципе одинаково.
var start = performance.now(); for (var i = 0; i < 100000; i++) { function listToArray(obj) { var rez = []; JSON.stringify(obj).replace(/\"value\":\d+/g, function (str) { rez.push(str.split(':')[1]) }); return rez; } var a = { value: 5, rest: { value: 10, rest: { value: 15, rest: { value: 30, rest: null } } } }; } alert(performance.now()-start) var start = performance.now(); for (var i = 0; i < 100000; i++) { function listToArray(obj) { return obj.rest ? [obj.value].concat(listToArray(obj.rest)) : [obj.value]; } a = { value: 5, rest: { value: 10, rest: { value: 15, rest: { value: 30, rest: null } } } }; } alert(performance.now()-start) |
destus,
твой вариант быстрее. :) |
как сделать, чтобы массив объявлялся внутри функции, а функция выводила этот массив?
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 18:07. |