【问题标题】:How to get a subarray?如何获得子数组?
【发布时间】:2018-12-10 19:51:14
【问题描述】:

我有一个数组,有一个子数组,我需要获取子数组(任务ID),我该如何获取呢?

onDeleteTask(Id: string) {
  this._taskService.deleteTask(Id).subscribe(data => {
    for (let i = 0; i < this.Notes.length; i++) {
      console.log(this.Notes[i].Tasks.filter(this.Notes.findIndex(e => e.Id === Id)));
    }
  });
}

数据:

[
   {
      "Id":"099c3d99-8f49-4298-934c-1fc5280d6d84",
      "Description":"12312",
      "NoteId":"1a91f108-e869-4427-ab5e-09d2262bfe20",
      "NoteTitle":"SAKI SAKI 5 DOOLLAA"
   },
   {
      "Id":"e74455d5-5002-4ea3-9f58-653440887690",
      "Description":"1",
      "NoteId":"1a91f108-e869-4427-ab5e-09d2262bfe20",
      "NoteTitle":"SAKI SAKI 5 DOOLLAA"
   },
   {
      "Id":"e75d537e-fe97-4dd5-8ca3-9cce5d3a1827",
      "Description":"2",
      "NoteId":"1a91f108-e869-4427-ab5e-09d2262bfe20",
      "NoteTitle":"SAKI SAKI 5 DOOLLAA"
   }
]

我试过了,但是id不起作用

【问题讨论】:

  • 你能把那个 Notes json 粘贴到这里吗
  • @NagaSaiA [{"Id":"099c3d99-8f49-4298-934c-1fc5280d6d84","Description":"12312","NoteId":"1a91f108-e869-4427-ab5e-09d2262bfe20 ","NoteTitle":"SAKI SAKI 5 DOOLLAA"},{"Id":"e74455d5-5002-4ea3-9f58-653440887690","Description":"1","NoteId":"1a91f108-e869-4427- ab5e-09d2262bfe20","NoteTitle":"SAKI SAKI 5 DOOLLAA"},{"Id":"e75d537e-fe97-4dd5-8ca3-9cce5d3a1827","Description":"2","NoteId":"1a91f108-e869 -4427-ab5e-09d2262bfe20","NoteTitle":"SAKI SAKI 5 DOOLLAA"}] 这是来自 http 请求的传入 json 代码
  • 那个过滤器到底是怎么回事
  • 通过编辑您的问题来输出您问题中的数据

标签: javascript arrays angular typescript


【解决方案1】:

如果您只想获取第一次出现的 ID,那么:

this._taskService.deleteTask(Id).subscribe(data => {
    for (let i = 0; i < this.Notes.length; i++) {
      console.log(this.Notes[i].Tasks[0].Id);
    }
  });

如果你想得到所有的ID,那么

this.Notes[i].Tasks.map(task => task.Id);

【讨论】:

  • 我正在向服务器发送删除请求,之后我需要刷新我的数组,以另一种方式我必须重新加载我的页面才能看到更改
  • 您刚才所说的与您的问题无关。如果您的意图是获得 ID,那么您可以使用上述方法。如果您有任何其他问题(我认为与此无关),您可以提出新问题。
  • 你可以阅读SO How To Ask。希望对您有所帮助。
  • 如果我的回答与您的问题相关,请点击绿色勾号将其选中为“答案”。
【解决方案2】:

您的 filter 方法未正确调用:

this.Notes[i].Tasks.filter(this.Notes.findIndex(e =&gt; e.Id === Id))

filter 接受一个谓词方法来遍历数组的每个元素并且应该返回一个布尔值,但findIndex 返回一个数字或未定义。你将findIndex 的结果传递给filter,所以本质上你是在做Tasks.filter(2),这是没有意义的。

我会提供有关如何修复它的建议,但我不完全确定您要对数组做什么。

【讨论】:

  • 我只是想通过 id 在子数组元素中查找,然后删除它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
相关资源
最近更新 更多