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

编写JavaScript函数:有条件删除对象属性并新增求和属性

解决方案:处理厨房货架统计对象的函数

你的代码存在两个核心问题:一是未正确将计算结果绑定到目标对象的totalShelves属性(当前的totalShelves是未声明的全局变量,存在风险);二是缺少删除原有属性的逻辑。以下是修正后的实现方案:

简化版实现

function sortTheKitchen(kitchen) {
    // 计算总货架数:属性存在则取值,不存在则用0兜底
    const total = (kitchen.shelvesInCupboards || 0) + (kitchen.shelvesNotInCupboards || 0);
    
    // 删除原有两个属性(即使属性不存在,delete操作也不会报错)
    delete kitchen.shelvesInCupboards;
    delete kitchen.shelvesNotInCupboards;
    
    // 添加新的统计属性
    kitchen.totalShelves = total;
    
    return kitchen;
}

严谨版实现(区分属性不存在与属性值为0的场景)

如果需要严格判断属性是否存在(而非属性值是否为假),可以用hasOwnProperty做更精准的处理:

function sortTheKitchen(kitchen) {
    // 严格判断属性是否存在,存在则取值,否则用0
    const inCupboards = kitchen.hasOwnProperty('shelvesInCupboards') ? kitchen.shelvesInCupboards : 0;
    const notInCupboards = kitchen.hasOwnProperty('shelvesNotInCupboards') ? kitchen.shelvesNotInCupboards : 0;
    const total = inCupboards + notInCupboards;
    
    // 删除原有属性
    delete kitchen.shelvesInCupboards;
    delete kitchen.shelvesNotInCupboards;
    
    // 赋值新属性
    kitchen.totalShelves = total;
    
    return kitchen;
}

关键逻辑说明

  • delete操作符专门用于移除对象的指定属性,只会作用于你指定的shelvesInCupboards和shelvesNotInCupboards,完全不会影响后续添加的totalShelves属性。
  • 先计算总和再删除原有属性,避免删除后无法获取属性值进行计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:52:21