如何检查包含另一个对象数组的对象数组是不是具有属性
Posted
技术标签:
【中文标题】如何检查包含另一个对象数组的对象数组是不是具有属性【英文标题】:How to check if array of objects that contains another array of object has property如何检查包含另一个对象数组的对象数组是否具有属性 【发布时间】:2021-12-26 17:25:19 【问题描述】:您好,我有一个对象数组,其中包含另一个对象数组。
我需要在数组中找到一个对象,该对象在它的数组中包含另一个具有某些属性的对象
ID。
假设我需要在 casses
数组中找到一个对象,其中包含具有特定 ID 的用户。
用户 ID 是唯一的。
casses = [
caseName: 'case 1',
date: '2021-05-4',
id: '123',
user: [name: 'Vlad', id: '1', name: 'Misha', id: '2']
,
caseName: 'case 2',
date: '2021-05-4',
id: '123',
user: [name: 'Alina', id: '3', name: 'Alex', id: '4']
,
caseName: 'case 3',
date: '2021-05-4',
id: '123',
user: []
,
]
我可以使用嵌套循环等等。但我想知道是否可以用一条线做? 像这样但更深一层:
let val = casses(item => item.id === element.id);
【问题讨论】:
嵌套循环是个好主意。然后,您通常可以用内置函数替换循环,这些函数接管循环,例如Array.prototype.find
或 Array.prototype.some
,但相应地,您需要嵌套的:casses.find(outerObject => outerObject.user.some(user => user.id === '1'));
我自己也想使用循环,它们很容易阅读和理解。但我的任务是用很少的代码行来完成。
【参考方案1】:
假设您的情况将ID
设置为“3”
试试下面
const ID = "3";
const casses = [
caseName: "case 1",
date: "2021-05-4",
id: "123",
user: [
name: "Vlad", id: "1" ,
name: "Misha", id: "2"
]
,
caseName: "case 2",
date: "2021-05-4",
id: "123",
user: [
name: "Alina", id: "3" ,
name: "Alex", id: "4"
]
,
caseName: "case 3",
date: "2021-05-4",
id: "123",
user: []
];
casses.find(item => item.user.some(subItem => subItem.id === ID));
【讨论】:
@Vlad,看看这个!! 非常感谢您的精彩回答),它对我帮助很大! 如果不使用内置功能,如何快速定位?如果使用 for 循环,我必须遍历所有内容,那么它并不是低效的。 使用内置函数比使用 for 循环更干净,并且它们已经很高效,并且 find 方法在找到第一个匹配项后停止循环。您还必须在循环中添加该逻辑。以上是关于如何检查包含另一个对象数组的对象数组是不是具有属性的主要内容,如果未能解决你的问题,请参考以下文章