javascript - Javascript比较两个JSON数组并返回不匹配值的键
问题描述
我有两个 JSON 数组,想知道不匹配的键。我不需要价值。
例子:
livetable: [
{ id: 1, name: "Sandra" },
{ id: 2, name: "John" },
],
backupTable: [
{ id: 1, name: "Sandra" },
{ id: 2, name: "Peter" },
],
我可以得到与这个 Lodash 脚本不同的键/值对:
difference = _.differenceWith(livetable,backupTable,_.isEqual)
但我只需要密钥,在此示例中,“id: 2”的“名称”不匹配,因此我需要获取新数组/变量的“名称”密钥。
(使用 VUE CLI)
编辑:添加了当前代码输出的示例。
var livetable = [{"id": 1, "name": "Sandra", "id": 2, "name": "John"}]
var backupTable = [{"id": 1, "name": "Sandra", "id": 2, "name": "Peter"}]
console.log(_.differenceWith(backupTable,livetable,_.isEqual))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
这将输出键:值对,但我只需要不同的键。
解决方案
这是解决我的问题的 VUE 代码。函数返回[ "name" ]
,这正是我所需要的。
data() {
return {
livetable: [{ id: 1, name: "Sandra" },{ id: 2, name: "John" }],
backupTable: [{ id: 1, name: "Sandra" },{ id: 2, name: "Peter" }],
difColumns: null,
};
},
methods: {
test3() {
let resultArray = []
this.livetable.forEach((array1, index) => {
const array2 = this.backupTable[index];
resultArray.push(this._.reduce(array1, (result, value, key) => this._.isEqual(value, array2[key]) ? result : result.concat(key), []))
});
this.difColumns = resultArray[0]
}
},
推荐阅读
- google-ads-api - 是否有 Google Ads 管理器 - 只读链接?
- javascript - GAS webapp静默失败,如何跟踪错误?
- flutter - 是否可以在使用旧包时为您的 /lib 代码启用 NNBD?
- initialization - keycloak 从一个新领域和一些客户端配置开始
- javascript - PHP echo方法输出的字符串参数不能传递给javascript函数
- java - 如何使用飞碟渲染 docx
- java - 如何创建一个键和值都作为枚举的 EnumMap 对象?
- r - R中的欧拉图
- python - tensorflow:注册 numpy bfloat16 扩展
- r - 使用存储的计算中的列表编写函数