编写函数为对象集中每个对象添加指定属性名与值(不修改原对象)
解决方案
要给目标对象的每个子对象添加指定属性且不修改原始对象,核心是创建对象副本而非直接操作原数据。以下是具体实现:
函数实现
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
相关产品推荐
相关产品推荐

