首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lodash isEqual -如何获取不同对象的键

Lodash isEqual -如何获取不同对象的键
EN

Stack Overflow用户
提问于 2022-05-25 15:10:58
回答 1查看 515关注 0票数 0

我正在尝试获取一个键数组,通过比较两个对象,这些键是不同的。我只能使用isEqualWithmapKeys来完成它,如下所示:

代码语言:javascript
运行
复制
const differencies = [];
const objA = {
  a: 1,
  b: 2,
  c: 3
};
const objB = {
  a: 1,
  b: 2,
  c: 100
};

function customizer(objOne, objTwo) {
  if (lodash.isEqual(objOne, objTwo)) {
    return true;
  }

  lodash.mapKeys(objOne, (value, key) => {
    if (value !== objTwo[key]) {
      differencies.push(key);
    }
  });

  return false;
}

lodash.isEqualWith(objA, objB, customizer);
console.log(differencies);
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

的问题是:是否有更好的方法来获取不同对象的键?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-25 16:06:28

因为您只需要比较键相同但值可能不同的对象,所以可以利用keys()keysIn() (如果还想遍历原型链)并删除与filter()没有匹配值的所有条目。

代码语言:javascript
运行
复制
const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = lodash.filter(
  lodash.keys(objA), 
  key => objA[key] !== objB[key]
);
console.log(differencies);
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

交替使用链式语法

代码语言:javascript
运行
复制
const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = lodash(objA)
  .keys()
  .filter(key => objA[key] !== objB[key]);
console.log(differencies);
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script>const lodash = _;</script>

对于这类功能,Lodash可能是一种过度使用。简单JavaScript等价为Object.keys()Array#filter()

代码语言:javascript
运行
复制
const objA = { a: 1, b: 2, c: 4 };
const objB = { a: 1, b: 2, c: 100 };

const differencies = Object.keys(objA)
  .filter(key => objA[key] !== objB[key]);
console.log(differencies);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72380171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档