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

编写函数为对象集中每个对象添加指定属性名与值(不修改原对象)

解决方案

要给目标对象的每个子对象添加指定属性且不修改原始对象,核心是创建对象副本而非直接操作原数据。以下是具体实现:

函数实现

function addPropertyToItems(items, propertyName, value) {
  // 遍历原对象的键值对,为每个子对象创建副本并添加新属性
  return Object.fromEntries(
    Object.entries(items).map(([key, item]) => {
      // 复制原item的所有属性,同时添加指定新属性
      return [key, {...item, [propertyName]: value}];
    })
  );
}

代码说明

  • Object.entries(items):把原对象转换成键值对数组,方便逐个处理子对象。
  • map(([key, item]) => ...):遍历每个键值对,用展开运算符...item复制子对象的所有属性,再通过[propertyName]: value添加指定属性(方括号用于解析变量形式的属性名)。
  • Object.fromEntries(...):将处理后的键值对数组重新转换为对象,作为最终返回值。

示例用法

比如给所有商品添加category: "Home Goods"属性:

const items = {
    item_392019302: {
        name: "Washing Machine",
        stock: 3,
    },
    item_392019342: {
        name: "Light Bulb",
        stock: 3,
    },
    item_392019340: {
        name: "Streaming Device",
        stock: 2
    },
    item_392019389: {
        name: "Plug",
        stock: 1
    },
    item_392019311: {
        name: "Trace",
        stock: 1
    }
};

const updatedItems = addPropertyToItems(items, "category", "Home Goods");

// 原对象未被修改
console.log(items.item_392019302.category); // undefined
// 新对象已添加目标属性
console.log(updatedItems.item_392019302.category); // "Home Goods"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:12:35