虽然按名称排序非常有效,但无法按价格排序

时间:2017-07-05 11:06:22

标签: angular sorting typescript

尝试制作这个小型书店应用,并希望添加选项,按价格和名称,升序和降序对书籍进行排序。按价格排序按照非常奇怪的顺序进行排序,并且无法找到原因,如果有人可以帮助并向我解释,我在Angular中很新。谢谢!

以下是源代码:https://github.com/EgomortIncognitus/bookstore

以下是sort-by.pipe.ts的代码:

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

@Pipe({
  name: 'sortBy'
})
export class SortByPipe implements PipeTransform {

  transform(array: Array<string>, args?: any): any {

    if (array) {

      let sortField = args[0];
      let sortDirection = args[1];
      let modifier = 1;

      if (sortDirection === 'desc') {
        modifier = -1;
      }

      array.sort((a: any, b: any) => {
        if (a[sortField] < b[sortField]) {
          return -1 * modifier;
        } else if (a[sortField] > b[sortField]) {
          return 1 * modifier;
        } else {
          return 0;
        }
      });

      return array;
    }
  }

}

2 个答案:

答案 0 :(得分:0)

按名称排序并按编号排序在Javascript中不相同

检查出来:https://www.w3schools.com/jsref/jsref_sort.asp

答案 1 :(得分:0)

您正在排序将完成lexicographically的字符串。

例如,"9" > "800000"9 < 800000