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

React.js中数组对象属性名空格转下划线及函数失效原因排查

问题原因分析

你的函数失效核心问题出在正则表达式的匹配规则错误,导致目标空格无法被正确替换,具体细节如下:

  • 你使用的正则/\s\s+/g仅匹配两个及以上的连续空格,但你的需求是替换单个空格(比如PRODUCT NAME里的单个空格),这个正则根本不会命中单个空格,自然不会执行替换操作。
  • 额外问题:你添加了.toUpperCase(),如果原属性名需要保留大小写(比如原key是"Product Name"),转成大写后会变成全大写的PRODUCT_NAME,这可能不符合你的预期;如果只是想替换空格,建议去掉这个方法。
修复后的代码示例

如果只需要替换所有空格(单个或连续多个)为下划线,同时保留原属性名的大小写,修改正则即可:

const productList = () => {
  for (let i = 0; i < data.length; i++) {
    let obj = data[i];
    Object.keys(obj).forEach((key) => {
      // 匹配所有单个或连续空格,替换为下划线
      const replacedKey = key.trim().replace(/\s+/g, "_");
      if (key !== replacedKey) {
        obj[replacedKey] = obj[key];
        delete obj[key];
      }
    });
  }
};

如果确实需要将属性名转为全大写,保留.toUpperCase()的同时,正则依然要改成/\s+/g:

const replacedKey = key.trim().toUpperCase().replace(/\s+/g, "_");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:21