[英]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.