axios response 返回数据,正则匹配替换里面文字,注意返回的数据可能多层嵌套的

发布时间 2023-04-22 16:56:14作者: 盘思动
  • 在做项目招标时,新切换个分支,用来竞标,大体流程类似,但其中有企业字段需要替换
  • 一个个页面替换也很麻烦,从接口返回数据上想想办法!
  • tips:返回的数据格式,各种类型,各种嵌套的可能性都有;
function replaceData(data) {
  if (typeof data === 'string') {
    // 使用正则表达式将 'apple' 替换为 'orange'
    const replacedData = data.replace(/apple/g, 'orange')
    return replacedData
  } else if (Array.isArray(data)) {
    // 如果是数组,则对数组中的每个元素递归调用 replaceData 函数
    return data.map(item => replaceData(item))
  } else if (typeof data === 'object' && data !== null) {
    // 如果是对象,则对对象中的每个属性递归调用 replaceData 函数
    const replacedData = {}
    for (const key in data) {
      const value = data[key]
      replacedData[key] = replaceData(value)
    }
    return replacedData
  } else {
    // 如果不是字符串、数组或对象,则直接返回原始数据
    return data
  }
}

axios.get('http://example.com/api/data')
  .then(response => {
    const data = response.data

    // 对数据进行匹配和替换
    const replacedData = replaceData(data)
     return replaceData;
    // 对替换后的数据进行下一步操作
    // ...
  })

在上述代码中,replaceData 是递归函数,它接受一个数据参数,判断数据类型并进行相应的处理。如果数据是字符串,则对其进行匹配和替换;如果数据是数组,则对数组中的每个元素递归调用 replaceData 函数;如果数据是对象,则对对象中的每个属性递归调用 replaceData 函数。最终,函数返回一个替换后的数据。

在实际应用中,可以根据需要添加其他判断条件和处理逻辑。但总的原则是:通过递归调用函数处理多层嵌套的数据,以实现匹配和替换。