从嵌套的对象列表中提取对象

Posted

技术标签:

【中文标题】从嵌套的对象列表中提取对象【英文标题】:Extracting an object from a nested list of objects 【发布时间】:2022-01-07 04:32:34 【问题描述】:

我有一个问题,我创建了一个较小的版本。

我有一个A 类型的对象列表,我们称之为L

L = List[A]

A 中有另一个对象列表B,它们有一个属性X

收集所有BX 等于VA

L.filter(x => x.B.exists(y => y.X == V)).map(a => a.B)

来自 REPL 的示例代码

class B(val X:Int)
  override def toString =
    s"b:$X"


class A(val b: List[B]) 
  override def toString =
    s"a: $b"


val listA1 = List(new B(1), new B(2), new B(3))
val listA2 = List(new B(1), new B(7), new B(12))
val listA3 = List(new B(9), new B(5), new B(3))

val L = List(new A(listA1), new A(listA2), new A(listA3))

println(L) // List(a: List(b:1, b:2, b:3), a: List(b:1, b:7, b:12), a: List(b:9, b:5, b:3))

val res = L.filter(x => x.b.exists(y => y.X == 3)).map(a => a.b)

println(res) // List(List(b:1, b:2, b:3), List(b:9, b:5, b:3))

现在的问题 - 如何获取X 值为3B 对象的列表?

那是一个如下的列表

List(b:3, b:3)

在现实世界中,我追求B 的其他属性,但首先我需要获得B 的属性。

【问题讨论】:

【参考方案1】:

如果我理解您的要求,这就是您所需要的。

L.flatMap(_.b.filter(_.X == 3))

顺便说一句,您使用的大写/小写变量名不一致、随意,而且相当混乱。

【讨论】:

以上是关于从嵌套的对象列表中提取对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从 React 中的嵌套对象数组中提取数据?

从嵌套对象中提取值并使用 LINQ 对它们进行排序

尝试使用递归从嵌套的 javascript 对象树中提取项目

从嵌套的对象数组中提取所有特定属性

如何从在线 JSON API 中提取嵌套数据对象? [关闭]

如何从PostgreSQL的嵌套xml对象中提取值?