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

如何提取对象非空值经正则处理后填充同对象的空字段

代码实现方案(JavaScript版本)
  • 先明确六根弦对应的属性键为['e','B','G','D','A','E'],避免误处理part、endMsg等非弦属性
  • 从上述键中筛选出值非空的项,取第一个作为模板字符串
  • 用题目指定的正则处理模板,得到仅保留|、其余匹配字符替换为-的填充串
  • 遍历所有弦属性,将空值的属性统一替换为填充串
function fillEmptyGuitarStrings(tabObj) {
    // 定义六根弦对应的属性键
    const stringKeys = ['e', 'B', 'G', 'D', 'A', 'E'];
    // 筛选非空的弦属性值,取第一个作为模板
    const template = stringKeys.map(key => tabObj[key]).filter(val => val.trim())[0];
    if (!template) return tabObj; // 无有效模板直接返回原对象
    // 用指定正则生成填充字符串
    const fillStr = template.replace(/[0-9-. a-zA-Z/\\~()<>]/g, '-');
    // 填充所有空的弦属性
    stringKeys.forEach(key => {
        if (!tabObj[key].trim()) {
            tabObj[key] = fillStr;
        }
    })
    return tabObj;
}

// 测试用例
const input = {
    "part": "Intro",
    "e": "------5/6------8\\6-|-------------------|-------------------",
    "B": "-----------9-------|---------6p8---(6)-|-------------------",
    "G": "--8----------------|---8h9-------------|--<8>--------------",
    "D": "",
    "A": "",
    "E": "",
    "endMsg": "Continue..."
};

const output = fillEmptyGuitarStrings(input);
console.log(output);

运行上述代码后输出的对象和题目给出的预期效果完全一致,正则处理时会自动保留竖线|,其余匹配的数字、字母、符号等都会替换为横杠-,同时不会修改非弦属性的原有值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:48:01