本文介绍如何使用 Laravel Collections 的 filter() 和 map() 方法,从 API 响应中提取仅存在于预设白名单(如 topProds)中的产品,并统一转换为带 label 键的标准数组结构。 本文介绍如何使用 laravel collections 的 \`filter()\` 和 \`map()\` 方法,从 api 响应中提取仅存在于预设白名单(如 \`topprods`)中的产品,并统一转换为带 `label` 键的标准数组结构。在构建商品展示逻辑时,常需对第三方 API 返回的原始产品列表进行"白名单过滤"------即只保留预先定义的核心品类(如 'laptop'、'printer' 等),同时标准化输出格式(如统一首字母大写的 label 字段)。直接使用 map() 无法实现条件筛选,必须结合 filter() 完成双重处理。以下是一个健壮、可复用的实现方案:public function getTopProducts(array prod): array{ // 预定义白名单(转为 Collection 提升查询性能) topProds = collect(['laptop', 'printer', 'keyboard', 'monitor', 'usb adaptor']); // 从 API 响应中提取原始产品标题(假设路径为 content.data[*].title) rawTitles = collect(prod['content']['data']) ->pluck('title') // 提取所有 title 值,返回扁平集合 ->map(fn(title) =\> strtolower(trim(title))); // 标准化:小写 + 去空格,确保大小写安全比对 // 过滤 + 映射:先筛选存在白名单中的项,再格式化为目标结构 return rawTitles -\>filter(fn(title) => topProds-\>contains(title)) ->map(fn(title) =\> \['label' =\> ucwords(str_replace('-', ' ', title))]) ->values() // 重置键名,确保返回连续数字索引数组 ->all();}? 关键要点说明: Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西
相关推荐
weixin_459753942 小时前
golang如何实现Trace上下文传播_golang Trace上下文传播实现思路weixin_444012932 小时前
PHP 中逻辑或(--)运算符的正确使用与条件逻辑重构指南iAm_Ike8 小时前
Go 中自定义类型与基础类型间的显式类型转换详解iuvtsrt8 小时前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】旦莫9 小时前
AI驱动的纯视觉自动化测试:知识库里应该积累什么知识内容tongluowan0079 小时前
MySQL中列数量及长度-liming-9 小时前
单片机设计_串口调试工具鹿角片ljp10 小时前
从告警检测到智能研判:SQL 注入研判模型的设计与实践知识领航员10 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景小新同学^O^11 小时前
简单学习 --> Spring事务