Zoeken op website

arrays - Angular gebruikt javascript om een sorteer Pipe te maken


Ik heb een vraag wanneer ik een sorteer-pijplijn in Angular2 bouw, hier is mijn pijplijncode:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'sort'
})
export class SortPipe implements PipeTransform {

  transform(value: any, propName: string): any {

    return value.sort((a,b)=> {
      return a[propName]-b[propName];
      // if(a[propName]>b[propName]) {
      //   return 1;
      // } else {
      //   return -1;
      // }
    });        
  }      
}

Wanneer ik de code in opmerkingen gebruik, werkt de pipe, maar wanneer ik return a [propName]-b[propName]; gebruik, werkt het niet;

Antwoord #1

Om sort te laten werken, moet je een geheel getal teruggeven (zie referentie). Weet je zeker dat het aftrekken van je eigenschappen altijd deze waarden zal opleveren?

Antwoord #2

Hangt ervan af wat je aan het sorteren bent. Als de waarde een getal is, zou het moeten werken. Als het een tekenreeks is, wordt een NaN geretourneerd. De tweede oplossing is beter.