【问题标题】: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.findArray.prototype.some,但相应地,您需要嵌套的:casses.find(outerObject => outerObject.user.some(user => user.id === '1'));
  • 我自己也想使用循环,它们很容易阅读和理解。但我的任务是用很少的代码行来完成。

标签: javascript node.js arrays reactjs object


【解决方案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 方法在找到第一个匹配项后停止循环。您还必须在循环中添加该逻辑。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2016-04-24
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2019-06-05
  • 2020-06-07
  • 1970-01-01
相关资源
最近更新 更多