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

TS/JS函数调用slice方法报逗号缺失解析错误如何解决

对象键处理函数调用slice后抛出「Parsing error: "," expected」报错排查

报错核心原因

触发解析错误的本质是违反了对象字面量的语法规则:

  • ES6 简写属性仅支持单个变量标识符的写法,例如{ value }等价于{ value: value },键名和变量名保持一致。
  • 你在else分支中直接写value.slice(3)属于运算表达式,不是合法的简写属性标识符。解析器读到value后碰到.操作符,会判定当前属性定义已结束,本该出现逗号分隔下一个属性,因此抛出「预期逗号」的解析错误。

其他隐藏问题

除了解析错误外,你的代码还存在两个会导致运行异常的问题:

  • 内置对象拼写错误:Objeckt.keys为笔误,正确写法是Object.keys
  • 逻辑不符合预期:当前reduce回调中写的{ ...prevValue, value }会给返回对象添加固定键为value的属性,值是当前遍历到的键名字符串,既没有保留原对象的属性值,也没有实现键名裁剪的效果。如果需要用表达式计算结果作为对象键,必须使用[表达式]的计算属性格式,同时同步取出原对象对应键的值做映射。

修正后代码

假设你的需求是遍历对象所有键,将bo-开头的键去掉前缀后保留原有属性值,非前缀键原样保留,修正后的代码如下:

const getObjectKeys = (object: any) => {
    return Object.keys(object).reduce((prevValue, key) => {
        if (key.startsWith("bo-")) {
            return { ...prevValue, [key.slice(3)]: object[key] }
        } else {
            return { ...prevValue, [key]: object[key] }
        }
    }, {})
}

如果你的实际需求是返回处理后的键名数组而非新对象,只需要把reduce初始值改为空数组[],回调里直接push处理后的key即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:18:22