sort pipe

by Huy Le

JavaScript

// Not complex enough.

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

@Pipe({ name: `sort` })
@Injectable
export class SortPipe implements PipeTransform {
    transform<T>(value:Array<T> = [], targetProperty:string = ""): Array<T> {
        if (!targetProperty) {
            return value.sort();
        }
    
        return value.sort(sortComplex(targetProperty));
  }
}

function sortComplex(property) {
    return function (a, b) {
        if (a[property] < b[property]) {
            return -1;
        }
        if (a[property] > b[property]) {
            return 1;
        }
        return 0
    }
}