помещение элементов в массив из объекта
здравствуйте.
практикуюсь в 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, время: 05:27. |