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

如何向JavaScript对象的动态键添加数组值而非覆盖原有值?

问题描述

需求:向空对象中为动态获取的对应键添加值。
当前问题:以下代码会覆盖键的原有值,无法实现预期效果:

let obj = {};

let key;
let value;

key = // 从选择器获取
value = // 从选择器获取

obj[key] = value;

询问:如何将新值"push"到对应键而非替换原有值?
示例:若两次迭代均选择key1,对应值为value1和value2,期望最终对象为:

{"key1": ['value1', 'value2']}
解决方案

核心逻辑是先判断目标键的状态,再做对应处理:

  • 如果键不存在,先给它初始化一个空数组
  • 如果键已存在,直接把新值追加到对应数组里

基础实现代码

let obj = {};

let key;
let value;

key = // 从选择器获取
value = // 从选择器获取

// 处理逻辑
if (!obj[key]) {
  obj[key] = []; // 初始化空数组
}
obj[key].push(value); // 将新值加入数组

简化写法(逻辑或运算符)

obj[key] = obj[key] || [];
obj[key].push(value);

ES6+优雅写法(空值合并赋值运算符)

obj[key] ??= [];
obj[key].push(value);

以上写法都能保证新值被追加到对应键的数组中,不会覆盖原有内容,最终得到数组格式的对象值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:46:02