You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从AdDetails集合中提取每个AdMedia的首个AdUri的uri?

解决方案:获取每个AdMedia的第一个AdUri的Uri列表

原代码问题分析

你当前的代码:

val preRollUri=preRollAdDetails.adMedia.flatMap { it.adUri.map { it.uri } }

会把所有AdMedia下的所有AdUri的Uri平铺成一个列表,比如示例数据会得到[adUrl1, url3, adUrl2, url3],这和你需要的「每个AdMedia仅取第一个AdUri的Uri」不符。

正确实现方式

情况1:确保每个AdMedia的adUri列表非空

如果可以保证所有AdMedia的adUri列表都至少有一个元素,直接使用map配合first():

val preRollUri = preRollAdDetails.adMedia.map { it.adUri.first().uri }

执行后会得到预期的[adUrl1, adUrl2]。

情况2:需要处理adUri为空的场景

如果存在adUri列表为空的情况,为避免抛出NoSuchElementException,使用firstOrNull()配合mapNotNull()过滤空值:

val preRollUri = preRollAdDetails.adMedia.mapNotNull { it.adUri.firstOrNull()?.uri }

这样会自动跳过那些没有AdUri的AdMedia,返回仅包含有效Uri的列表。

内容的提问来源于stack exchange,提问作者WISHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 17:45:05