假设有一个包含两个对象的数组:
const array = [{obj1: {price: 10, quantity: 10}, {obj2: {price: 20, quantity: 10}}}]
我如何通过每个键来计算这两个对象之间的差,从而得到:
{price: -10, quantity: 0}
我已经尝试过使用reduce函数来做这个,但是我似乎无法得到任何地方。
如果您的目标是生成一个具有N个键的对象(其中N是实际对象中的键数),则此代码可以工作。
const array = [{obj1: {price: 10, quantity: 10}}, {obj2: {price: 20, quantity: 10}}];
const [obj1, obj2] = array.map((item) => Object.values(item)[0]);
const difference = Object.keys(obj1).reduce((result, key) => {
if (obj2.hasOwnProperty(key)) {
result[key] = obj1[key] - obj2[key];
}
return result;
}, {});
console.log(difference);
输出将是
{price: -10, quantity: 0}