Obecnie zajmuję się kwestią pisania funkcji recruzywnej, aby zamówić niektóre dane JSONA. Mam kilka zagnieżdżonych tablic obiektów, które muszę uporządkować w pojedyncze slajdy. Struktura jest podobna do następującej:Zamawianie funkcji rekursywnej skutkuje tablicami tablic
[
{
"title": "a",
"children": [
{
"title": "a-a",
"children": [
{
"title": "a-a-a"
},
{
"title": "a-a-b"
}
]
},
{
"title": "a-b",
"children": [
{
"title": "a-b-a"
},
{
"title": "a-b-b"
}
]
}
]
},
{
"title": "b",
"children": [
{
"title": "b-a",
"children": [
{
"title": "b-a-a"
},
{
"title": "b-a-b"
}
]
},
{
"title": "b-b",
"children": [
{
"title": "b-b-a"
},
{
"title": "b-b-b"
}
]
}
]
}
]
Pisałem rekurencyjną funkcję:
var catalog = {
init: function() {
var _this = this;
$.getJSON("catalog.json", function(data) {
_this.slides = [];
_this.parseCategories(data.catalog.category,-1,0);
});
},
parseCategories: function(array, depth, prevParent) {
++depth;
if (!this.slides[depth]) this.slides[depth] = [];
if (!this.slides[depth][prevParent]) this.slides[depth][prevParent] = [];
this.slides[depth][prevParent].push(array);
for (var i = 0; i < array.length; i++) {
if (array[i].category) {
this.parseCategories(array[i].category, depth, i);
}
}
}
}
catalog.init();
This Wyjścia:
Jednak zamiast pobierania danych dla mój trzeci slajd w formacie:
aaa
ABA
aca
Chciałbym dostać
AA- [A, B, C]
Zastanawiałem się, czy to było możliwe, ponieważ nie jestem bardzo dobry w obsłudze procesów rekurencyjnych. Mam nadzieję, że było jasne i dziękuję za przeczytanie tego. Po prostu potrzebuję zachować oryginalną strukturę danych, ale usunąć pierwszy poziom głębi dla każdej iteracji (przesuń suwak, który reprezentuje zwiększającą się głębokość w mojej strukturze danych).
Nie jestem pewien, czy rozumiem twój dokładny problem. Ostatnio rozwiązałem podobny problem i być może [ta odpowiedź] (http://stackoverflow.com/a/31461290/361762) ci pomoże. Jeśli nie, sprawdź, czy możesz wyjaśnić problem - obrazy oczekiwanych wyników na górze są użyteczne i coś takiego z rzeczywistymi wynikami pomoże ci to wyjaśnić. – dave
Dziękuję za odpowiedź, niestety wierzę, że mój problem może być nieco bardziej skomplikowany. Zmieniono mój post z nowym obrazem, który konfrontuje dane wyjściowe, które moja funkcja zwraca i dane, których potrzebuję. Chodzi o to, że muszę zbudować suwak za pomocą szablonu kierownicy i nawigować między dziećmi i rodzicami podczas ukrywania wszystkich niepotrzebnych danych. Dlatego moje dane wyjściowe muszą zwracać dane w postaci tablicy na głębokość i struktury każdej podkategorii w tablicy, podczas gdy głębokość wzrasta. Mógłbym użyć kilku pętli, ale obawiam się kosztów wydajności. –
Czy możesz podać swoją prawdziwą strukturę json? Twój obecny json nie pasuje do przykładu na obrazku. Jeśli to możliwe, jsfiddle z tym, co zrobiłeś, –