簡體   English   中英

如何比較 javascript 中的兩個對象並獲得差異?

[英]How to compare two objects in javascript and get difference?

我有兩個對象要比較。 我想找到第二個 object 中不同的鍵及其值。 它應該只返回 object 中的不同鍵及其值。

const obj1={name:"abc",age:21,place:"xyz"}
const obj2={name:"pqr",age:21}

所以,在這里我想返回{name:"pqr"}因為這里的名稱值與第一個 object 不同。 我試過了,

const returnObject = Object.assign({}, findOwner, data);

const returnObject = { ...findOwner, ...data };

但這些返回的並不完全是我想要的。

解決方案是,

function Newdifference(origObj, newObj) {
  function changes(newObj, origObj) {
    let arrayIndexCounter = 0
    return transform(newObj, function (result, value, key) {
      if (value && !isObject(value) && !isEqual(JSON.stringify(value), JSON.stringify(origObj[key]))) {
        let resultKey = isArray(origObj) ? arrayIndexCounter++ : key
        result[resultKey] = (isObject(value) && isObject(origObj[key])) ? changes(value, origObj[key]) : value
      }
    });
  };
  return changes(newObj, origObj);
}

此 function 將返回在兩個對象中跟蹤的更改

我找到了將任何類型計數與任何屬性順序進行比較的更好方法:

let isEqual = (...params) => params.map(Object.keys).reduce((prev, cur) => [...prev, ...cur], []).every(key => params.every(param => param[key] === params[0][key]))

例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM