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

多条件过滤两个数组异常:属性变更后返回空数组如何修复?

问题修复方案

核心问题分析

你的代码输出空数组,主要有两个原因:

  1. 属性名错误:示例对象中使用了JS关键字const作为属性名(非法),且代码中比较的是cost,属性名不匹配导致比较逻辑异常;
  2. 逻辑范围不符预期:当前代码仅从productos数组筛选,若你期望保留prevProductos中的变更对象,逻辑方向需要调整。

修复方案

情况1:保留productos中与prevProductos属性有差异的对象

先修正属性名(将const改为合法的cost),确保比较字段一致:

const productos = [{
  prodId: 3,
  amount: 30,
  cost: 100 // 修正属性名,避免关键字冲突
}];

const prevProductos = [{
  prodId: 3,
  amount: 20,
  cost: 100
}];

let addedProducts = productos.filter(item => 
  !prevProductos.some(obj => 
    obj.prodId === item.prodId 
    && obj.amount === item.amount 
    && obj.cost === item.cost
  )
);

console.log(addedProducts);
// 输出:[{ prodId: 3, amount: 30, cost: 100 }]

情况2:保留两个数组中所有属性有差异的对象(含两边的变更项)

合并两个数组的筛选结果,覆盖所有差异对象:

const productos = [{
  prodId: 3,
  amount: 30,
  cost: 100
}];

const prevProductos = [{
  prodId: 3,
  amount: 20,
  cost: 100
}];

// 筛选productos中独有的/变更的对象
const fromProductos = productos.filter(item => 
  !prevProductos.some(obj => 
    obj.prodId === item.prodId 
    && obj.amount === item.amount 
    && obj.cost === item.cost
  )
);

// 筛选prevProductos中独有的/变更的对象
const fromPrev = prevProductos.filter(item => 
  !productos.some(obj => 
    obj.prodId === item.prodId 
    && obj.amount === item.amount 
    && obj.cost === item.cost
  )
);

// 合并结果
const addedProducts = [...fromProductos, ...fromPrev];

console.log(addedProducts);
// 输出:[{ prodId: 3, amount: 30, cost: 100 }, { prodId: 3, amount: 20, cost: 100 }]

情况3:期望输出prevProductos中的变更对象(与你的示例期望一致)

调整筛选的目标数组为prevProductos:

const productos = [{
  prodId: 3,
  amount: 30,
  cost: 100
}];

const prevProductos = [{
  prodId: 3,
  amount: 20,
  cost: 100
}];

let addedProducts = prevProductos.filter(item => 
  !productos.some(obj => 
    obj.prodId === item.prodId 
    && obj.amount === item.amount 
    && obj.cost === item.cost
  )
);

console.log(addedProducts);
// 输出:[{ prodId: 3, amount: 20, cost: 100 }]

内容的提问来源于stack exchange,提问作者alexgarciaalcuadrado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:20:40