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

JavaScript遍历对象数组并替换字符串中的值

处理动态键对象数组的属性值替换

没问题,这种动态键的场景在日常开发里挺常见的,我们可以通过遍历对象的所有属性来实现统一替换。下面是具体的解决方案:

核心思路

因为对象的键是动态生成的,没法提前指定要处理哪些属性,所以核心步骤是:

  • 先遍历数组中的每一个对象
  • 对每个对象,获取它的所有属性名(不管是固定的还是动态生成的)
  • 逐个检查属性值,只对字符串类型的值执行替换操作(避免数字、布尔等类型报错)

代码实现

修改原数组的版本

如果允许直接修改原数组,用forEach遍历就很高效:

const objArray = [{ 
  name: 'Joe', 
  age: 21, 
  randomCol1: 'Blah<br>Blah<br>Blah', 
  randomCol2: 'Blah<br>Blah<br>Blah', 
  randomCol3: 'Blah<br>Blah<br>Blah' 
}, { 
  name: 'Bob', 
  age: 25, 
  randomCol1: 'Blah<br>Blah<br>Blah' 
}];

// 定义要替换的目标字符串和替换后的内容
const targetStr = '<br>';
const replaceWith = '\n'; // 换成你实际需要的内容,比如'<br>'或者其他文本

// 遍历数组中的每个对象
objArray.forEach(obj => {
  // 获取当前对象的所有属性键
  Object.keys(obj).forEach(key => {
    // 只处理字符串类型的值,避免非字符串类型调用replace方法报错
    if (typeof obj[key] === 'string') {
      // 用replaceAll做全局替换,所有匹配的内容都会被替换
      obj[key] = obj[key].replaceAll(targetStr, replaceWith);
    }
  });
});

// 查看处理后的结果
console.log(objArray);

返回新数组的版本(不修改原数组)

如果不想改动原数组,推荐用map配合对象浅拷贝来生成新数组,更符合函数式编程的最佳实践:

const objArray = [{ 
  name: 'Joe', 
  age: 21, 
  randomCol1: 'Blah&lt;br&gt;Blah&lt;br&gt;Blah', 
  randomCol2: 'Blah&lt;br&gt;Blah&lt;br&gt;Blah', 
  randomCol3: 'Blah&lt;br&gt;Blah&lt;br&gt;Blah' 
}, { 
  name: 'Bob', 
  age: 25, 
  randomCol1: 'Blah&lt;br&gt;Blah&lt;br&gt;Blah' 
}];

const targetStr = '&lt;br&gt;';
const replaceWith = '\n';

const processedArray = objArray.map(obj => {
  // 浅拷贝原对象,避免修改原数据
  const newObj = {...obj};
  Object.keys(newObj).forEach(key => {
    if (typeof newObj[key] === 'string') {
      newObj[key] = newObj[key].replaceAll(targetStr, replaceWith);
    }
  });
  return newObj;
});

console.log(processedArray); // 处理后的新数组
console.log(objArray); // 原数组保持不变

兼容旧环境的注意事项

如果你的运行环境不支持replaceAll(比如旧版浏览器),可以用正则表达式的全局匹配来替代,注意要转义目标字符串里的特殊正则字符:

// 替换replaceAll这一行
obj[key] = obj[key].replace(new RegExp(targetStr.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), replaceWith);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:53:02