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

JavaScript中修改对象数组:替换键及对应值

解决数组对象的键值替换问题

嘿,我来帮你搞定这个数组转换需求!咱们一步步来实现:

首先明确你的核心需求:把原数组里每个对象的数字键替换成指定文本(比如Invoice、ManualReminder),同时将对应的值统一替换为{ sms: true, email: false }。

具体实现代码

直接用这段可运行的代码就能达成目标:

// 你的原始数组
const originalArray = [ { '0': { notify_item: '1' } }, { '1': { notify_item: '2' } }, { '2': { notify_item: '3' } } ];

// 定义你想要替换成的键名列表,顺序和原数组一一对应
const newKeys = ['Invoice', 'ManualReminder', 'PaymentAlert'];

// 定义统一要替换的目标值
const targetValue = { sms: true, email: false };

// 转换数组
const transformedArray = originalArray.map((_, index) => {
  const newObj = {};
  // 用对应索引的新键名,若newKeys长度不够则用默认名称兜底
  const currentKey = newKeys[index] || `Notification-${index + 1}`;
  // 用扩展运算符创建值的副本,避免后续修改时互相影响
  newObj[currentKey] = { ...targetValue };
  return newObj;
});

console.log(transformedArray);

最终输出结果

运行代码后,你会得到想要的数组:

[
  { 'Invoice': { sms: true, email: false } },
  { 'ManualReminder': { sms: true, email: false } },
  { 'PaymentAlert': { sms: true, email: false } }
]

小细节补充

  • 我加了兜底逻辑:如果newKeys的长度比原数组短,剩下的对象会自动使用Notification-1、Notification-2这类默认名称,避免出现无键可用的错误。
  • 用{ ...targetValue }而非直接赋值,是为了创建值的独立副本——要是直接引用targetValue,所有数组项的值都会指向同一个对象,后续修改其中一个时其他项也会跟着变化,扩展运算符能完美避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:05:47