【问题标题】:Angular Typescript filtering object array not workingAngular Typescript过滤对象数组不起作用
【发布时间】:2020-05-30 07:05:32
【问题描述】:

我正在尝试根据值过滤一组对象。在以下 console.log 中,只有第一个给出了预期的结果:

console.log('log1: ', sf);
console.log('log2: ', sf.filter(f => true));
console.log('log3: ', sf.filter(f => f.Specification.FormSelector === 'app-g-form'));
console.log('log4: ', sf.findIndex(f => f.Specification.FormSelector.includes('app-g-form')));

上面的结果是:

对于 log2、log3 和 log4,我希望控制台输出与 log1 相同。输出 log1 显示 sf 确实包含有效数据。

【问题讨论】:

  • 这有点奇怪,至少如果sf 是一个合法的数组。 sf 哪里来的?
  • 你能在堆栈闪电战中重新创建吗?这是我的版本,按预期工作:stackblitz.com/edit/angular-xfkcrc
  • 你的假设是正确的。问题必须在通话之间。您是否执行了任何其他对 sf 造成副作用的操作,因此日志会打印出结果?
  • 就像@PhilippMeissner 所问的那样,您在登录后是否修改了对象sf?后期修改仍然可以反映在日志中。控制台日志不保存对象的副本,它只包含对它的引用。

标签: arrays angular typescript filter


【解决方案1】:

感谢cmets。

我可能已经完成了这项工作。我正在设置数组的一部分:

const sf1: GSubForm = {Specification: this.detailSpecification};
this.specification.SubForms.push(sf1);

上面的代码被放置在我用来从 API 获取数据的 observable 中。设置好数据后,我设置了 SubForms 数组。将代码移出可观察对象并直接放入 ngOnInit(){} 后,一切正常。

不确定为什么一种方式有效,而另一种无效,但我很高兴它正在向前发展。

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 2020-05-25
    • 2021-08-03
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多