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

如何移除数组对象值中的特定文本/字符串?

解决方案

你可以通过字符串分割的方式提取需要保留的文本部分,同时结合递归遍历(或修改你的扁平化函数)来处理嵌套结构中的所有title字段,完全不需要正则或你提到的那些方法。

方案1:扁平化同时处理标题

修改你已有的扁平化函数,在将元素加入结果数组前,对title进行处理:

function flatten(arr) {
  const flattened = [];
  for (const { children, ...element } of arr) {
    // 分割掉从' **'开始的所有内容,保留前面的有效文本
    const processedElement = {
      ...element,
      title: element.title.split(' **')[0]
    };
    flattened.push(processedElement);
    if (children) {
      flattened.push(...flatten(children.page.results));
    }
  }
  return flattened;
}

const flat = [{ page: { results: flatten(DataArray[0].page.results) } }];
console.log(flat[0].page.results);

执行后,扁平化后的每个元素的title都会只保留**之前的内容,比如:

  • 原'TextIWantA **(Text) I Dont Want**'会变成'TextIWantA'
  • 原'ChildA TextIWant **(Text I) Dont Want**'会变成'ChildA TextIWant'

方案2:直接修改原嵌套结构(不扁平化)

如果你不需要扁平化,只想保留原结构并清理title,可以写一个递归函数遍历所有节点:

function cleanAllTitles(arr) {
  arr.forEach(item => {
    // 提取**之前的文本
    item.title = item.title.split(' **')[0];
    // 递归处理子节点(如果存在)
    if (item.children?.page?.results) {
      cleanAllTitles(item.children.page.results);
    }
  });
}

// 调用函数处理原数组
cleanAllTitles(DataArray[0].page.results);
console.log(DataArray);

原理说明

这里利用split(' **')将字符串从第一个' **'位置分割成两部分,取数组的第一个元素就是你需要保留的文本。这种方式完全符合你的要求:

  • 不需要正则表达式
  • 不需要使用.startsWith、.indexOf等方法
  • 能自动适配不同的待移除文本内容(只要待移除部分以' **'开头)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:35:26