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

如何通过groupTaskUuid对比数组并返回对应purchaseOrderGroupTasks值

如何根据GroupTaskUuid匹配对应的purchaseOrderGroupTasks值?

先明确你的需求场景:

  • 原始记录数组:
array:3 [
  0 => array:2 [
    "groupTaskUuid" => "98790287437987860"
    "purchaseOrderGroupTasks" => "98790287437987893"
  ]
  1 => array:2 [
    "groupTaskUuid" => "98790287437987862"
    "purchaseOrderGroupTasks" => "98790287437987894"
  ]
  2 => array:2 [
    "groupTaskUuid" => "98790287437987861"
    "purchaseOrderGroupTasks" => "98790287437987895"
  ]
]
  • 目标GroupTaskUuid数组:
array:2 [
  0 => "98790287437987862"
  1 => "98790287437987861"
]
  • 期望得到对应purchaseOrderGroupTasks值的数组:
array:2 [
  "0" => "98790287437987894"
  "1" => "98790287437987895"
]

最高效的做法是先把原始记录转成以groupTaskUuid为键,purchaseOrderGroupTasks为值的映射表,这样后续匹配就是O(1)的快速查找,比循环遍历匹配效率高很多,尤其是数据量大的时候。

PHP实现方案

// 原始记录数组
$records = [
    ["groupTaskUuid" => "98790287437987860", "purchaseOrderGroupTasks" => "98790287437987893"],
    ["groupTaskUuid" => "98790287437987862", "purchaseOrderGroupTasks" => "98790287437987894"],
    ["groupTaskUuid" => "98790287437987861", "purchaseOrderGroupTasks" => "98790287437987895"]
];

// 目标uuid数组
$targetUuids = ["98790287437987862", "98790287437987861"];

// 一步生成uuid和对应值的映射表
$uuidMap = array_column($records, 'purchaseOrderGroupTasks', 'groupTaskUuid');

// 从映射表中提取目标uuid对应的值
$result = array_map(function($uuid) use ($uuidMap) {
    // 用?? null处理目标uuid不存在的情况,避免报错
    return $uuidMap[$uuid] ?? null;
}, $targetUuids);

print_r($result);

运行后就能得到你想要的结果。这里用到的array_column是PHP内置的高效函数,专门用来从多维数组中提取指定列,同时支持指定另一列作为键,非常适合做这种映射。

JavaScript实现方案

如果你是在前端或者Node.js环境下,也可以用类似的思路:

const records = [
    {groupTaskUuid: "98790287437987860", purchaseOrderGroupTasks: "98790287437987893"},
    {groupTaskUuid: "98790287437987862", purchaseOrderGroupTasks: "98790287437987894"},
    {groupTaskUuid: "98790287437987861", purchaseOrderGroupTasks: "98790287437987895"}
];

const targetUuids = ["98790287437987862", "98790287437987861"];

// 用reduce生成映射对象
const uuidMap = records.reduce((map, item) => {
    map[item.groupTaskUuid] = item.purchaseOrderGroupTasks;
    return map;
}, {});

// 提取目标值
const result = targetUuids.map(uuid => uuidMap[uuid] || null);

console.log(result);

这个方案里用reduce把数组转成键值对对象,再用map遍历目标数组取值,逻辑和PHP方案完全一致,同样能得到期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:27:59