Przesortowanie listy obiektów

0

hej,

mam mały problem. Posiadam listę obiektów, w którym mam: datę, nazwę oraz ilość. Obiekty się powtarzają, tzn ilość lub datą będą zawsze inne, ale nazwa może się powtórzyć kilka razy. Chce teraz przejść po całej liście i zrobić jakby nową listę ale obiektów w obiektach, aby tak to wyglądało:
zamiast:

ClientRow {name: "A", date: 2014-04-04, count: 14} 
ClientRow {name: "A", date: 2014-04-08, count: 1} 
ClientRow {name: "B", date: 2014-04-07, count: 13} 
ClientRow {name: "B", date: 2014-04-06, count: 230} 
ClientRow {name: "C", date: 2014-04-05, count: 140}

uzyskać:

ClientRow {name: "A", series: [ { date: 2014-04-04, count: 14}, {date: 2014-04-08, count: 1}]} 
ClientRow {name: "B", series: [ { date: 2014-04-07, count: 13}, {date: 2014-04-06, count: 230}]}   
ClientRow {name: "C", date: 2014-04-05, count: 140}

dodanie znaczników <code class="javascript"> - @furious programming

0

I z czym konkretnie masz problem?
Pętla for, a może warunek w if?

Nie zadałeś pytania.

0

algorytm bedzie taki: iterujesz po obiektach petla i tworzysznowy element lub dodajesz do istniejacego dany obiekt, jesli jest tylko jeden obiejkt w docelowej liscie to tworzysz nowy element series i tam wrzucasz te obiekty, tyle ;)

0

No właśnie niby takie proste nie? A jakoś totalnie mi nie idzie zakodowanie tego :/
mam tyle:

for (var i = 0; i < visitsForChart.length; i++)
            {

                if (i == 0)
                {
                    newForChart.push({ "name": visitsForChart[i].project, "data": [Date.UTC(moment(visitsForChart[i].when).format('YYYY'), parseInt(moment(visitsForChart[i].when).format('MM')) - 1, moment(visitsForChart[i].when).format('DD')), visitsForChart[i].count] });
                }
                else
                { //next step
                    for (var kk in newForChart) {
                        var kk1 = kk.valueOf();
                        if (kk1.name == visitsForChart[i].name) {
                            (kk1.data).push(Date.UTC(moment(visitsForChart[i].when).format('YYYY'), parseInt(moment(visitsForChart[i].when).format('MM')) - 1, moment(visitsForChart[i].when).format('DD')), visitsForChart[i].count);
                            console.log(kk1);
                            

                        } else {
                            newForChart.push({ "name": visitsForChart[i].project, "data": [Date.UTC(moment(visitsForChart[i].when).format('YYYY'), parseInt(moment(visitsForChart[i].when).format('MM')) - 1, moment(visitsForChart[i].when).format('DD')), visitsForChart[i].count] });

                            return false;
                        }
                    }
                }
            }

Po prostu mi to nie dziala, jakos nie umiem ogarnac jak to powinno byc zrobione, gubie sie w tych listach :(

0

standardowo zapytam o bledyw konsoli, ake juz widze ze pierwszy if zostanie zlpany tylko gdy iteracyjne i jest rowne zero, czyli de facto tylko za pierwszym obrotem petli. potem stawaij sobie breakpointy, alobo console.log i patrz krok w krok hjak to sie zachowuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1