【问题标题】:Sort method not working in ngOnInit method排序方法在 ngOnInit 方法中不起作用
【发布时间】:2019-06-23 11:07:49
【问题描述】:

我正在尝试对具有这些属性的类的对象数组进行排序 -> { data: any, mystring: string }

我正在尝试这样排序

ngOnInit() {
  this.filterarray = this.unsortedarray.sort(
    (i1, i2) => i1.data.timestamp > i2.data.timestamp ? 1 : -1
  );
}

但是,排序没有发生,我收到this.filterarray = this.unsortedarray

如果我对任何组件(更改)方法执行相同操作(我在前端有一个选择组件,这将有助于过滤来自unsortedarray 的元素),则排序将按预期进行。不知道如何调试这个。

所有其他代码行(如数据初始化等)都在 ngOnInit 方法中按预期进行。

提前致谢

【问题讨论】:

  • 当您在 ngOnInit() 中排序之前记录未排序数组时,它是否已满?
  • 另外我猜排序是就地完成的,它会改变 unsortedarrat
  • @FatemeFazli 是的,我在进行排序之前检查过,未排序的数组包含所有元素。
  • @MarouaneFazouane filterarray 在排序前为空,但 filterarray 在运行排序后变为等于未排序的数组,这很奇怪。
  • 请提供一些示例数据以供使用。如果您可以创建一个工作示例 stackblitz 来复制此问题,这也将非常有帮助。

标签: angular typescript


【解决方案1】:

假设您的排序方法在适当的时候被调用,您必须返回时间戳之间的全部差异,这将有助于排序,否则返回 1 的差异将不会相互区分,对于 -1 也是如此。

this.filterarray = this.unsortedarray.sort(
    (i1, i2) => i1.data.timestamp - i2.data.timestamp
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多