繁体   English   中英

用对象过滤多维数组

[英]Filter multidimensional array with objects

使用如下数组,如何根据 texts.id 过滤对象? 例如,如果我想返回这个相同的数组,但没有 object 引用 id 123 的文本,我将如何 go 关于它? 我可以访问要过滤掉的 id 以及它所在的 object 的名称。 我一直在试图解决这个问题,但我不确定这仅适用于过滤器方法。 提前感谢任何有帮助的人。

[
 0: Object {
  name: 'Name 1',
  texts[
   0: Obj{
    id: '123',
    body: 'test message'
   },
   1: Obj{
    id: '456',
    body: 'test message 2'
   }
  ]
 },

 1: Object {
  name: 'Name 2',
  texts[
   0: Obj{
    id: '789',
    body: 'test message3'
   },
   1: Obj{
    id: '101112',
    body: 'test message 4'
   }
  ]
 }
]

是的,可以使用Array.prototype.filter()Array.prototype.find()

 const entry = [{name: "Name 1",texts: [{id: "123",body: "test message"},{id: "456",body: "test message 2"}]},{name: "Name 2",texts: [{id: "789",body: "test message3"},{id: "101112",body: "test message 4"}]}]; const filter= "123"; const output = entry.filter(item => item.texts.find(text=> text.id===filter)); console.log(output);

我不清楚您是否要删除整个外部 object ,其中texts数组包含具有特定 ID 的 object (即:在您的示例中,这将删除整个'Name 1'只想删除texts数组中具有特定ID的object(即:保留外部object,只需删除ID为123的文本中的object)。

前者已由上面的@lissettdm 回答,但如果是后者,您可以执行以下操作:

const filter = "123";
entry.forEach(item => item.texts = item.texts.filter(text => text.id !== filter));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM