Как уменьшить объект до нового объекта с несколькими парами ключ: значение? - PullRequest
0 голосов
/ 26 марта 2020
90: {month: "06", context: "-", year: "2019", pageLabel: "Zusammenfassung", hits: 18}
91: {month: "06", context: "LiveTest", year: "2019", pageLabel: "Zusammenfassung", hits: 4}
92: {month: "07", context: "-", year: "2019", pageLabel: "Zusammenfassung", hits: 22}
93: {month: "07", context: "LiveTest", year: "2019", pageLabel: "Zusammenfassung", hits: 14}

Итак, я пытаюсь получить новый массив объектов для указанного месяца c, который должен содержать пары ключ-значение совпадений + pageLabel. Но мне удалось получить Массив Объектов только с хитами.

var output = LIVE_STAT_DATA.reduce(function(o, cur){

        var occurs = o.reduce(function(n, item, i) {
            return (item.month === cur.month) ? i:n;
        },-1);

        if(occurs >=0 ){
            //füge den aktuellen hits, der liste von hits hinzu
            o[occurs].hits = o[occurs].hits.concat(cur.hits);

        }else{
            var obj = {
                month: cur.month,
                hits: [cur.hits],

            };
            o = o.concat([obj]);
        }

        return o;
    }, []);

    console.log("months + hits + pageLabel",output);

Вот результат:

0:
month: "06"
hits: (26) [6, 50, 34, 4, 36, 4, 24, 4, 22, 4, 34, 4, 26, 4, 20, 6, 22, 4, 18, 4, 14, 10, 10, 4, 2, 4]

1 Ответ

0 голосов
/ 26 марта 2020

простое решение будет что-то вроде этого

const arr = [
  {month: "06", context: "-", year: "2019", pageLabel: "Zusammenfassung", hits: 18},
  {month: "06", context: "LiveTest", year: "2019", pageLabel: "Zusammenfassung", hits: 4},
  {month: "07", context: "-", year: "2019", pageLabel: "Zusammenfassung", hits: 22},
  {month: "07", context: "LiveTest", year: "2019", pageLabel: "Zusammenfassung", hits: 14}
];

const fct = (arr, month) => {
  return arr.filter(obj =>
    obj.month == month
  ).map(obj => ({
    pageLabel: obj.pageLabel,
    hits: obj.hits
  }));
}

console.log(fct(arr,"06"))
.as-console-wrapper { max-height: 100%!important; top: 0; }

используйте фильтр, чтобы получить все объекты, например, с месяцем == "06", затем отобразите массив и извлеките ключи, которые вы хотите явно, как это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...