arrays - 如何通过比较打字稿中的两个数组对象来获取不同的元素
问题描述
我从 2 个数组对象中获取不同的元素时遇到问题。我的例子是这样的:
array1= [{id: 1, a: "a", b: "b"}, {id: 2, c: "c", d: "d"}, {id: 3, e: "e", f: "f"}];
array2 = [{c: "c", d: "d"}];
我的预期是:
输出结果是这样的:
每个对象中的这个 id 都不相关。
result =[{a: "a", b: "b"},{e: "e", f: "f"}];
我曾尝试在打字稿中使用过滤器或查找,但它不起作用。
有什么解决办法??
解决方案
使用lodash
package 及其isEqual
方法,它可能看起来像这样:
const _ = require('lodash');
array1= [{id: 1, a: "a", b: "b"}, {id: 2, c: "c", d: "d"}, {id: 3, e: "e", f: "f"}];
array2 = [{c: "c", d: "d"}];
const results = array1.filter(item => !array2.some(item2 => _.isEqual(_.omit(item, ['id']), _.omit(item2, ['id']))))
这样您就可以将对象与多于一层的道具进行比较
推荐阅读
- angularjs - 进度条以监控 Angular 1.5.6 中的 ajax 调用状态
- c++ - 在 for 循环中使用 vec.size() 时出现运行时错误
- laravel - Laravel + Vue 限制访问部分 api 路由
- c# - 使用方法“mysql_native_password”对用户“root”的主机“127.0.0.1”进行身份验证失败,并显示消息:未知数据库“xxx”
- docker-desktop - Docker Desktop 安装失败:无法启动服务
- loops - 如何循环浏览文件夹中的文件?
- css - 如何在 CSS 规则集(Firefox Web 浏览器用户界面)中覆盖这个单一选择器?
- android - 我最近开始在 android studio 中为一个学校项目编写代码,遇到了一些严重的问题并且无法解决,有人知道如何解决这个问题吗?
- javascript - 有没有办法不通过点击关闭antd下拉菜单?
- minecraft - 如何将 minecraft 目录变成单独的客户端?