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

如何在JSONAta中从数组移除存在于另一数组的对象?

JSONata 从数组中排除指定对象的实现方法

基于整个对象匹配

JSONata支持对象的深度相等比较,可直接沿用简单数组的排除逻辑:

$largerArray := [{"Name": "A", "Code": "100"} ,{"Name": "B", "Code": "200"},{"Name": "C", "Code": "300"}, {"Name": "D", "Code": "400"}];
$objectsToExclude := [{"Name": "A", "Code": "100"} ,{"Name": "B", "Code": "200"},{"Name": "C", "Code": "300"}];

$result := $largerArray[$not($ in $objectsToExclude)];

执行后$result将返回预期的[{"Name": "D", "Code": "400"}],JSONata会递归校验对象的所有键值对是否完全一致,匹配成功的对象会被排除。

基于Code属性匹配

若两个数组中的对象存在其他属性差异,仅需基于Code字段匹配排除,可先提取排除数组的Code集合,再过滤原数组:

$largerArray := [{"Name": "A", "Code": "100"} ,{"Name": "B", "Code": "200"},{"Name": "C", "Code": "300"}, {"Name": "D", "Code": "400"}];
$objectsToExclude := [{"Name": "A", "Code": "100"} ,{"Name": "B", "Code": "200"},{"Name": "C", "Code": "300"}];

$excludeCodes := $objectsToExclude.Code;
$result := $largerArray[$not($.Code in $excludeCodes)];

这种写法兼容性更强,只要对象的Code值存在于排除集合中,就会被过滤掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:53:10