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

求助:多种将字符串值转为小写的方法均无法生效

问题解决:把对象中所有字符串值转为全小写

你当前的核心问题是字符串转换步骤没真正修改原对象的属性值。JavaScript里的字符串是不可变类型,value.toLowerCase()只会生成一个新的小写字符串,但你没把这个新值重新赋值回kitchen[key],所以原对象里的字符串根本没发生变化。

先看你代码里的问题片段:

for (let key in kitchen){
    let value = kitchen[key]
    if (typeof value === 'string'){
        value.toLowerCase() // 这里只生成了新字符串,没存回原对象
    }
}

修正后的代码

把转换后的字符串重新赋值给对象属性即可,顺便修正两处潜在逻辑问题:

function sortTheKitchen(kitchen) {
    delete kitchen.hoover;
    // 修复总货架数计算:避免0被||逻辑忽略
    kitchen.totalShelves = (kitchen.shelvesInCupboards || 0) + (kitchen.shelvesNotInCupboards || 0);
    // 分开执行delete,避免逻辑短路导致第二个属性无法删除
    delete kitchen.shelvesInCupboards;
    delete kitchen.shelvesNotInCupboards;
    // 遍历转换字符串并赋值回原对象
    for (let key in kitchen){
        let value = kitchen[key];
        if (typeof value === 'string'){
            kitchen[key] = value.toLowerCase(); // 关键:更新原对象属性
        }
    }
    return kitchen;
}

额外说明

  1. 原代码中totalShelves的计算逻辑有漏洞:如果某一货架数是0,||会直接跳过这个值,改成(x || 0)能确保数值相加的正确性。
  2. 用&&连接delete语句会有逻辑短路风险——如果第一个属性不存在,delete返回false,第二个属性就不会被删除,分开写更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:07:03