如何从具有不同值的两个对象中返回键和值

我将如何循环两个对象,并且only返回不同键和值的列表?

let list = [];

let previousObject = {
    key: 'key_1',
    name: 'Previous name',
    age: '30',
    location: '12345 Main St.',
    height: '77',
    weight: '215',
    ...
}

let newObject = {
    key: 'key_1',
    name: 'New name',
    age: '25',
    location: '54321 Main St.',
    height: '77',
    weight: '195',
    ...
}

我希望列表返回...

list = [{ name: 'New name', age: '25', location: '54321 Main St.' }]

注意事项:

  • previousObject might比newObject包含更多的键
  • 每个用户会话检查这些差异可能会发生多次
回答如下:

在您的示例中,list是一个只有一个包含所有差异的对象的数组。要获得该对象,可以执行以下操作:

let list = [];

let previousObject = {
    key: 'key_1',
    name: 'Previous name',
    age: '30',
    location: '12345 Main St.',
    height: '77',
    weight: '215',
}

let newObject = {
    key: 'key_1',
    name: 'New name',
    age: '25',
    location: '54321 Main St.',
    height: '77',
    weight: '195',
}

let diff = {}

for (const key in newObject) {
  if (previousObject[key] != newObject[key]) {
    diff[key] = newObject[key]
  } 
}

console.log(diff)

如何从具有不同值的两个对象中返回键和值

我将如何循环两个对象,并且only返回不同键和值的列表?

let list = [];

let previousObject = {
    key: 'key_1',
    name: 'Previous name',
    age: '30',
    location: '12345 Main St.',
    height: '77',
    weight: '215',
    ...
}

let newObject = {
    key: 'key_1',
    name: 'New name',
    age: '25',
    location: '54321 Main St.',
    height: '77',
    weight: '195',
    ...
}

我希望列表返回...

list = [{ name: 'New name', age: '25', location: '54321 Main St.' }]

注意事项:

  • previousObject might比newObject包含更多的键
  • 每个用户会话检查这些差异可能会发生多次
回答如下:

在您的示例中,list是一个只有一个包含所有差异的对象的数组。要获得该对象,可以执行以下操作:

let list = [];

let previousObject = {
    key: 'key_1',
    name: 'Previous name',
    age: '30',
    location: '12345 Main St.',
    height: '77',
    weight: '215',
}

let newObject = {
    key: 'key_1',
    name: 'New name',
    age: '25',
    location: '54321 Main St.',
    height: '77',
    weight: '195',
}

let diff = {}

for (const key in newObject) {
  if (previousObject[key] != newObject[key]) {
    diff[key] = newObject[key]
  } 
}

console.log(diff)