Упорядочивать договоренность в Угловом

Я получаю array с базы данных (в нисходящей команде) и крашу их в front в таблице и в графике, как он появляется в изображении: introducir la descripción de la imagen aquí

но в части графика я хочу упорядочи это восходящей формы и я делаю следующее:

export class PruebasComponent implements OnInit {

  data: any[];
  dataSource: PeriodicElement[] = [];
  lineChartData: ChartDataSets[];
    .......
 ngOnInit() {
    this.loading = true;


    this.datos.getDesktopLimit().subscribe(
      res => {
        this.loading = false;
        this.data = [res];
        this.dataSource = this.data[0]; //aqui almaceno el arreglo y lo paso al componente html
        this.barChartData = true;
        this.getFilter(this.dataSource); // ejecuto la funcion getFilter()
      }
    )
  }

с sort я это упорядочиваю восходящей формы, чтобы это перемещать в график

  getFilter(data) {
    console.log(data);

     data.sort((a, b) => a.id - b.id); //ordenar de forma ascendente para la grafica

    for (let entry of data) {
      this.date.push(moment(entry.created).format('DD-MM-YYYY HH:mm'))
      this.time.push(entry.total_load_time * 0.001)
    }

    this.lineChartData =  [{ data: this.time, label: 'Time Render' }];
    this.lineChartLabels = this.date;
    this.loading = false
  }

Действительно он приказывает это мне, но таблица также рукоположена в восходящую форму

introducir la descripción de la imagen aquí

0
задан 08.11.2019, 21:30
1 ответ

У тебя есть проблема ссылки, в javascript (TS tambiГ©n), все объекты проходят по ссылке. Ты должен отделять два объекта: таблица и grГЎfica.

Тогда:


let dataOriginalDB:any[] = []; // Tu arreglo de objetos 
let dataParaTabla:any[] = JSON.parse(JSON.stringify(dataOriginalDB)) //deep Copy
let dataParaGrafica:any[] = JSON.parse(JSON.stringify(dataOriginalDB)) //deep Copy 

Сейчас, когда он сделает sort, не идут менять другие тебе automГЎtico, идея состоит, в том, чтобы переместив это в string и потом в JSON он снова потерял ссылку.

делать это с JSON.parse - самое безопасное, зависит от всей глубины имейте твои объекты (объекты внутри объектов).

Других способов делать копии objectos и предотвращать ссылку - с Object.assign() и оператор spread ...


let dataOriginalDB:any[] = []; // Tu arreglo de objetos 
let dataParaTabla:any[] = { ... dataOriginalDB } //deep Copy con spread
let dataParaGrafica:any[] = [];
dataParaGrafica = Object.assign(dataParaGrafica , dataOriginalDB );

Эти Гєltimos тратят меньше ресурсов, так как mГ©todo JSON.parse требует немного больше в CPU, ты будешь замечать это, если ты будешь конвертировать договоренности большой (> 30k реестры).

Надеялся, что он подает тебя, привет!

1
ответ дан 01.12.2019, 12:13