排序数组出现错误,如无法读取未定义的属性(读取 'sort')
Sorting array got error like cannot read properties of undefined (reading 'sort')
我设置了排序管道。正在排序,但出现此类错误:
cannot read properties of undefined (reading 'sort')
在 angular core.js 在我的本地 运行.
这是我的订单-by.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'orderBy',
})
export class OrderByPipe implements PipeTransform {
transform(array: any, field: string): any[] {
array.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}
}
您需要检查 array
必须有值然后才进行排序。
同时,您应该将 array
指定为 any[]
类型,因为 sort()
是 Array
提供的方法。
解决方案 1
当array
为空(null
或undefined
)时直接中断函数。
transform(array: any[], field: string): any[] {
if (!array) return array;
array.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}
Sample Solution 1 on StackBlitz
解决方案 2
使用Typescript optional chaining使得.sort()
在array
为空(null
或undefined
)时不会被执行。
transform(array: any[], field: string): any[] {
array?.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}
我设置了排序管道。正在排序,但出现此类错误:
cannot read properties of undefined (reading 'sort')
在 angular core.js 在我的本地 运行.
这是我的订单-by.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'orderBy',
})
export class OrderByPipe implements PipeTransform {
transform(array: any, field: string): any[] {
array.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}
}
您需要检查 array
必须有值然后才进行排序。
同时,您应该将 array
指定为 any[]
类型,因为 sort()
是 Array
提供的方法。
解决方案 1
当array
为空(null
或undefined
)时直接中断函数。
transform(array: any[], field: string): any[] {
if (!array) return array;
array.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}
Sample Solution 1 on StackBlitz
解决方案 2
使用Typescript optional chaining使得.sort()
在array
为空(null
或undefined
)时不会被执行。
transform(array: any[], field: string): any[] {
array?.sort((a: any, b: any) => {
if (a[field] < b[field]) {
return -1;
} else if (a[field] > b[field]) {
return 1;
} else {
return 0;
}
});
return array;
}