JavaScript入门:合并cart1与cart2代码且避免cart2带location属性
解决JavaScript合并cart1/cart2代码的问题
针对你的需求,这里有两种简单易懂的实现方式:
方法1:先构建基础对象,按需添加属性
这种方式逻辑直观,适合入门理解:
if (cart1 || cart2) { for (const key in data) { // 先创建包含公共属性的对象 const item = { id: Math.random().toString(), name: data[key].name, // 注意属性末尾要加逗号,你原代码漏了这个细节 image: data[key].image }; // 仅当cart1为真时,再给对象添加location属性 if (cart1) { item.location = data[key].location; } main.push(item); } }
方法2:使用ES6对象展开语法
利用条件判断结合对象展开,直接在对象字面量中控制属性是否存在:
if (cart1 || cart2) { for (const key in data) { main.push({ id: Math.random().toString(), name: data[key].name, image: data[key].image, // 只有cart1为真时,才会展开并添加location属性 ...(cart1 && { location: data[key].location }) }); } }
额外提醒
你原代码里的对象属性末尾缺少逗号(比如name: data[key].name后面没加逗号),这会触发语法错误,上面的代码已经修正了这个问题。
内容的提问来源于stack exchange,提问作者inthewilddd
相关产品推荐
相关产品推荐

