Heim > Web-Frontend > View.js > So verwenden Sie Vue und Element-UI zum Gruppieren und Zusammenfassen von Daten

So verwenden Sie Vue und Element-UI zum Gruppieren und Zusammenfassen von Daten

王林
Freigeben: 2023-07-21 14:37:12
Original
3512 Leute haben es durchsucht

So verwenden Sie Vue und Element-UI zum Gruppieren und Zusammenfassen von Daten

In der Frontend-Entwicklung stoßen wir häufig auf Situationen, in denen wir Daten gruppieren und zusammenfassen müssen. Vue ist ein sehr beliebtes JavaScript-Framework und Element-UI ist eine auf Vue basierende Komponentenbibliothek. Es bietet einen umfangreichen Satz an UI-Komponenten, die uns beim schnellen Erstellen von Seiten helfen können. In diesem Artikel wird die Verwendung von Vue und Element-UI zum Gruppieren und Zusammenfassen von Daten vorgestellt und anhand von Codebeispielen veranschaulicht.

Vorbereitung

Zuerst müssen wir Vue und Element-UI installieren. Sie können über den folgenden Befehl installiert werden:

npm install vue
npm install element-ui
Nach dem Login kopieren

Nachdem die Installation abgeschlossen ist, können wir Vue und Element-UI im Projekt verwenden.

Datengruppierung

Bei der Datengruppierung werden Daten mit denselben Attributen klassifiziert und nach Gruppen angezeigt. Wir können die Tabellenkomponente in Element-UI verwenden, um diese Funktion zu erreichen.

Angenommen, wir haben eine Datenliste der Schülerleistungen mit der folgenden Struktur:

const scores = [
  { name: '张三', subject: '数学', score: 90 },
  { name: '李四', subject: '语文', score: 85 },
  { name: '王五', subject: '数学', score: 95 },
  { name: '赵六', subject: '语文', score: 92 },
  { name: '小明', subject: '数学', score: 88 },
  { name: '小红', subject: '英语', score: 91 }
];
Nach dem Login kopieren

Wir müssen diese Daten nach Fächern gruppieren und in einer Tabelle anzeigen. Zuerst müssen wir die Element-UI-Tabellenkomponente in die Vue-Komponente einführen:

import { Table, TableColumn } from 'element-ui';
Nach dem Login kopieren

Dann definieren wir die benötigten Daten und die Spalten der Tabelle in der Komponente:

data() {
  return {
    scores: scores,
    columns: [
      { label: '姓名', prop: 'name' },
      { label: '科目', prop: 'subject' },
      { label: '分数', prop: 'score' }
    ],
    groupedScores: []
  };
},
Nach dem Login kopieren

In den gemounteten Hook können wir Code schreiben Verarbeiten Sie die Datengruppierung. Hier verwenden wir die Reduzierungsmethode, um dies zu erreichen:

mounted() {
  const groups = this.scores.reduce((acc, score) => {
    const group = acc.find(g => g.subject === score.subject);
    if (group) {
      group.scores.push(score);
    } else {
      acc.push({ subject: score.subject, scores: [score] });
    }
    return acc;
  }, []);
  this.groupedScores = groups;
},
Nach dem Login kopieren

Als Nächstes verwenden wir die Tabellenkomponente in unserer Vorlage, um die Daten anzuzeigen:

<el-table :data="groupedScores">
  <el-table-column v-for="column in columns" :label="column.label" :key="column.prop">
    <template slot-scope="{ row }">
      {{ row[column.prop] }}
    </template>
  </el-table-column>
</el-table>
Nach dem Login kopieren

Auf diese Weise haben wir die Gruppierung der Daten und die Anzeige im erreicht Tisch. Führen Sie den Code aus und Sie sehen eine nach Konto gruppierte Tabelle.

Datenzusammenfassung

Als nächstes fassen wir die Daten zusammen. Angenommen, wir müssen die durchschnittliche und maximale Punktzahl jedes Fachs in der obigen Tabelle anzeigen.

Zuerst müssen wir einige berechnete Eigenschaften in der Komponente definieren, um die zusammenfassenden Daten zu erhalten:

computed: {
  averageScore() {
    return this.groupedScores.map(group => {
      const scores = group.scores.map(score => score.score);
      const average = scores.reduce((sum, score) => sum + score, 0) / scores.length;
      return { subject: group.subject, average: average.toFixed(2) };
    });
  },
  maxScore() {
    return this.groupedScores.map(group => {
      const scores = group.scores.map(score => score.score);
      const max = Math.max(...scores);
      return { subject: group.subject, max: max };
    });
  }
},
Nach dem Login kopieren

Dann fügen wir der Tabelle zwei Spalten hinzu, um die zusammenfassenden Daten anzuzeigen:

<el-table :data="groupedScores">
  <el-table-column v-for="column in columns" :label="column.label" :key="column.prop">
    <template slot-scope="{ row }">
      {{ row[column.prop] }}
    </template>
  </el-table-column>
  <el-table-column label="平均分">
    <template slot-scope="{ row }">
      {{ averageScore.find(s => s.subject === row.subject).average }}
    </template>
  </el-table-column>
  <el-table-column label="最高分">
    <template slot-scope="{ row }">
      {{ maxScore.find(s => s.subject === row.subject).max }}
    </template>
  </el-table-column>
</el-table>
Nach dem Login kopieren

Auf diese Weise haben wir die Gruppierung abgeschlossen und Zusammenfassung der Datenfunktion. Führen Sie den Code aus und Sie können sehen, dass die durchschnittliche Punktzahl und die höchste Punktzahl für jedes Fach in der Tabelle angezeigt werden.

Zusammenfassung

Das Obige ist der Prozess der Gruppierung und Zusammenfassung von Daten mithilfe von Vue und Element-UI. Durch die Einführung der Tabellenkomponente von Element-UI können wir Daten einfach gruppieren und anzeigen und in Kombination mit berechneten Attributen auch die Datenzusammenfassungsfunktion implementieren. Ich hoffe, dieser Artikel ist hilfreich für Sie. Vielen Dank für das Lesen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Vue und Element-UI zum Gruppieren und Zusammenfassen von Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage