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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:54:09