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

Dart如何实现PHP array_diff()功能:对比两个Map返回差异项

Dart实现类PHP array_diff的Map比对函数

通用实现代码

Map<K, V> mapDiff<K, V>(Map<K, V> newMap, Map<K, V> oldMap) {
  final diff = <K, V>{};
  newMap.forEach((key, value) {
    // 旧Map不含该键,或对应值不相等时加入差异结果
    if (!oldMap.containsKey(key) || oldMap[key] != value) {
      diff[key] = value;
    }
  });
  return diff;
}

使用示例

void main() {
  var post = {"name": "First Name", "views": 30};
  var postUpdated = {"name": "Second Name", "views": 30};
  
  var result = mapDiff(postUpdated, post);
  print(result); // 输出: {name: Second Name}
}

补充说明

  • 该实现完全对齐PHP array_diff($newMap, $oldMap) 的行为:仅返回新Map中与旧Map存在差异的键值对,保留新值,旧Map有但新Map没有的键不会出现在结果中。
  • 如果需要比对嵌套Map、List等复杂结构,默认的==判断仅比对引用,可修改值比对逻辑,递归调用mapDiff处理嵌套结构即可。

内容的提问来源于stack exchange,提问作者Shams M.Monem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:30:04