Array.find 在 Angular 应用程序中不起作用;在控制台中工作

blu*_*isk -1 arrays find angular

我正在开发的一个 Angular 应用程序SourceService首先从 API 端点获取源,将它们存储到内存中并用作本地缓存,可以通过id. 到目前为止一切顺利,我想。但函数findSourceById总是返回undefined。为什么?

  findSourceById(id: number): Source {
    console.log(this.sources);
    console.log(id);
    console.log(this.sources.find(s => s.id === id));
    return this.sources.find(s => s.id === id)
  }
Run Code Online (Sandbox Code Playgroud)

以上输出:

数组 [{id: 1} {id: 2}] // 模型

2

不明确的

但是,如果我使用 DevTools 将数组分配给一个新的全局变量,然后find在该变量上运行相同的函数,它会返回预期的元素。

另外,如果我插入debugger的return语句之前声明,我看到,this.sources仍然是两个数组,而是sfind函数定义是不明确的。看起来 JavaScript 错误地将 Array 元素传递到循环迭代中。

blu*_*isk 5

问题是===操作符和事实,不知何故id传入的函数是字符串类型。奇怪,因为 Angular 并没有抱怨在期待一个数字时收到一个字符串(根据类型提示)。