猿问

JavaScript - 返回两个对象之间的差异?

有人可以告诉我在比较这样的东西时如何返回新数据。使用原生 JavaScript。


{

    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",

    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}"

}

与此相比


{

    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",

    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}",

    "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",

    "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"

}

它应该只返回差异。


{

    "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",

    "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"

}


守着星空守着你
浏览 378回答 3
3回答

梦里花落0921

您可以使用Object.keys()和Array.includes()来做到这一点。var data = {  "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",  "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}",  "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",  "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"};var obj1 = {  "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",  "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}"};var result = {};var keys = Object.keys(obj1);for (var key in data) { if (!keys.includes(key)) {  result[key] = data[key]; }}console.log(result);

UYOU

一种面向对象的方法,使用reduce.const obj1 = {  '48': '{"sid":"48","name":"title 1"}',  '77': '{"sid":"77","name":"The blahblah title"}',}const obj2 = {  '48': '{"sid":"48","name":"title 1"}',  '77': '{"sid":"77","name":"The blahblah title"}',  '83': '{"sid":"83","name":"The blahblah derp"}',  '87': '{"sid":"87","name":"The derpy title 4"}',}const combinedObject = { ...obj1, ...obj2 }const diff = Object.entries(combinedObject).reduce((acc, [key, value]) => {  if (    !Object.values(obj1).includes(value) ||    !Object.values(obj2).includes(value)  )    acc[key] = value  return acc}, {})console.log(diff)这种方法将适用于多个对象,并且不会将一个对象视为主要对象进行比较。

波斯汪

你可以使用Object.prototype.entries和Array.prototype.reduce。const a = {    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}"};const b = {    "48": "{\"sid\":\"48\",\"name\":\"title 1\"}",    "77": "{\"sid\":\"77\",\"name\":\"The blahblah title\"}",    "83": "{\"sid\":\"83\",\"name\":\"The blahblah derp\"}",    "87": "{\"sid\":\"87\",\"name\":\"The derpy title 4\"}"};const c = Object.entries(b).reduce((c, [k, v]) => Object.assign(c, a[k] ? {} : { [k]: v }), {});console.log(c);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答