gpt4 book ai didi

javascript - 如何在 javaScript 中的两个对象中获得不同

转载 作者:行者123 更新时间:2023-12-01 17:43:52 24 4
gpt4 key购买 nike

最近我在做这个项目。我在获取两个 JavaScript 对象之间的差异时遇到了问题。下面是该对象的两个示例。第二个对象有一个额外的键。那么如何获取对象之间的差异。

示例 1

{
"title": "JavaScript Tutorial",
"body": "JavaScript",
"comments": [
{
"name": "John Smith",
"comment": "Great article",
"age": 28,
"stars": 4,
"date": "2014-09-01"
},

]
}

示例 2

{
"title": "JavaScript tutorial",
"body": "JavaScript.",
"topics":"how learn JavaScript withing 10 days",
"comments": [
{
"name": "John Smith",
"comment": "Great article",
"age": 28,
"stars": 4,
"date": "2014-09-01"
},

]
}

我想要如下结果。以下是两个对象的关键不同

"topics":"如何在 10 天内学​​会 JavaScript",

最佳答案

看看deep-diff你基本上可以像这样使用你的样本数据

var diff = require('deep-diff').diff;

var lhs = {
"title": "JavaScript Tutorial",
"body": "JavaScript",
"comments": [
{
"name": "John Smith",
"comment": "Great article",
"age": 28,
"stars": 4,
"date": "2014-09-01"
},

]
};

var rhs = {
"title": "JavaScript tutorial",
"body": "JavaScript.",
"topics":"how learn JavaScript withing 10 days",
"comments": [
{
"name": "John Smith",
"comment": "Great article",
"age": 28,
"stars": 4,
"date": "2014-09-01"
},

]
};

var differences = diff(lhs, rhs);
console.log(differences);

输出

[ DiffEdit {
kind: 'E',
path: [ 'title' ],
lhs: 'JavaScript Tutorial',
rhs: 'JavaScript tutorial' },
DiffEdit {
kind: 'E',
path: [ 'body' ],
lhs: 'JavaScript',
rhs: 'JavaScript.' },
DiffNew {
kind: 'N',
path: [ 'topics' ],
rhs: 'how learn JavaScript withing 10 days' } ]

如您所见,除了新属性之外还有更多变化。 kind 属性也指示了差异的种类。如果您只需要新属性,则只需考虑带有 kind === 'N'

的对象

关于javascript - 如何在 javaScript 中的两个对象中获得不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38628567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com