You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算数组中两个对象按键对应的属性差值?

问题描述

给定如下JavaScript数组:

const array = [{obj1: {price: 10, quantity: 10}, obj2: {price: 20, quantity: 10}}]

需要按每个属性键计算obj1与obj2对应属性的差值(即obj1.属性 - obj2.属性),预期结果为:

{price: -10, quantity: 0}

尝试用reduce函数实现但未成功,求解决方法。

解决方案

首先要注意,你的数组里只有一个元素,第一步需要先取出这个对象,再获取其中的obj1和obj2。下面提供两种可行的实现方式:

方法一:遍历属性键直接计算

const [item] = array; // 取出数组中的唯一对象
const { obj1, obj2 } = item; // 解构出obj1和obj2
const result = {};

// 遍历obj1的所有属性键并计算差值
Object.keys(obj1).forEach(key => {
  result[key] = obj1[key] - obj2[key];
});

console.log(result); // {price: -10, quantity: 0}

方法二:使用reduce函数实现

如果想用reduce,可以基于属性键数组进行累积计算:

const [item] = array;
const { obj1, obj2 } = item;

const result = Object.keys(obj1).reduce((acc, key) => {
  acc[key] = obj1[key] - obj2[key];
  return acc;
}, {}); // 初始值设为空对象

console.log(result); // {price: -10, quantity: 0}

关键说明

  • 先从数组提取目标对象:因为数组只有一个元素,用数组解构const [item] = array更简洁。
  • 确保obj1和obj2的属性键完全一致,若存在不一致的键,可额外添加判断逻辑(比如检查obj2是否包含对应键)。

内容的提问来源于stack exchange,提问作者B.Mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:40:01