编写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
相关产品推荐
相关产品推荐

