JavaScript中如何返回两个对象间值不匹配的条目
单对象差异字段提取实现
核心目标为从两个同结构单JavaScript对象中,提取新对象与默认对象取值不一致的条目,剔除完全匹配的公共字段。
- 原参考方案适配场景说明:你之前参考的对象数组对比实现,是针对跨数组的元素级匹配逻辑,和当前单对象的键值对差异提取场景不匹配,因此无法直接套用得到预期结果。
- 原示例对象的语法修正:你初始定义的两个对象属性行缺少逗号分隔,直接运行会触发语法报错,补全语法后的可运行对象结构如下:
const defaultObject = { item1: "", item2: 2, item3: 3, item4: "" } const newObject = { item1: 1, item2: 4, item3: 3, item4: "something" }
- 差异提取实现逻辑:遍历新对象的所有可枚举键值对,逐一对标默认对象的同键取值,过滤掉值完全相等的条目,将剩余条目重新组装为对象即可。
可直接运行的实现代码:
const diffResult = Object.fromEntries( Object.entries(newObject).filter(([key, currentValue]) => { // 仅保留与默认对象取值不相等的字段 return currentValue !== defaultObject[key] }) ) console.log(diffResult) // 控制台输出为你预期的结构: // { // item1: 1, // item2: 4, // item4: "something" // }
逻辑说明:两个对象中取值完全一致的item3会被过滤掉,最终保留所有存在值差异的字段,和预期输出完全对齐。
内容的提问来源于stack exchange,提问作者Sofia Shaikh
相关产品推荐
相关产品推荐

