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

JS对象姓名拆分问题:输出无引号属性键的困惑

问题分析与解决

1. 代码里的实际逻辑bug

你当前代码存在一个明显问题:familyName 会包含开头的空格。
因为oldName.slice(indexOfSpace)是从空格的索引位置开始截取,比如原name是"Bob Jones",indexOfSpace是3,slice(3)得到的是" Jones"(前面带空格),这不符合预期。需要改成:

let familyName = oldName.slice(indexOfSpace + 1);

这样就能得到不带前置空格的纯粹姓氏字符串。

2. 控制台输出键带引号的问题

控制台输出对象时键带引号,是控制台自身的格式化行为,不是你的代码有问题。
JavaScript中,当对象的键是合法标识符(比如firstName、lastName这种符合变量命名规则的键),定义时可以不用引号,但控制台为了统一显示格式,有时会给所有键加上引号。你通过person.firstName = givenName添加的属性,本身就是不带引号的标识符属性,完全符合作业平台的要求——平台要的是对象结构正确,而非控制台的显示格式。

修正后的完整代码

function makeGuestList(person) {
    let oldName = person.name;
    let indexOfSpace = oldName.indexOf(" ");
    let givenName = oldName.slice(0, indexOfSpace);
    let familyName = oldName.slice(indexOfSpace + 1); // 移除姓氏前的空格
    
    person.firstName = givenName;
    person.lastName = familyName;
    delete person.name;
    
    console.log(person);
    // 建议return person,方便后续逻辑复用
    // return person;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:28