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

如何通过Object.values获取父对象属性引用并修改过滤后的对象?

怎么让过滤后的对象修改同步更新原对象?

你当前的代码其实已经能实现修改initial["w"]的效果。JavaScript里对象是引用类型,Object.values(initial)返回的是原对象属性值的引用,filter操作也不会生成新对象,所以修改filtered[0].a会直接同步到initial["w"].a。

实际运行你的代码后,initial的输出应该是这样的:

{
  q: { a: 1 },
  w: { a: 13 },
  e: { a: 3 }
}

要是你那边没得到这个结果,大概率是这两个原因:

  • 代码执行时还有其他逻辑改动了initial对象
  • 你搞错了filtered[0]对应的原属性:Object.values(initial)的顺序和对象属性枚举顺序一致,这里"w"是第二个属性,过滤后确实是filtered[0]

要是想更稳妥,避免因属性顺序出问题,可以用Object.entries保留键信息,精准操作原对象:

const initial = {
  "q": { a: 1},
  "w": { a: 2},
  "e": { a: 3},
}

// 过滤时保留键和值的对应关系
const filteredEntries = Object.entries(initial).filter(([key, value]) => value.a >= 2);

// 修改引用的对象,同步更新原对象
filteredEntries[0][1].a = 13;
// 也可以通过键直接修改原对象,更直观
// initial[filteredEntries[0][0]].a = 13;

console.log(initial);

这种方式能清楚看到你修改的是原对象的哪个键,不会因为属性顺序问题搞混。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:56:24