cqwcns 发表于 2021-9-12 21:48

分享一个JS递归遍历数组和对象,并替换指定字符的函数

工作需要,有一个JS对象中可能包含一个或多个字符串'dbServerDate',而且位置不定,我需要将它替换为另一个符号,例如db.serverDate()(微信小程序云函数的服务器时间)。
可见db.serverDate()的个值使用JSON.parse+JSON.stringify是对报错的,所以自己写了一个递归来实现替换,分享一下代码。也欢迎各位指教。


   // 递归遍历并替换指定值
funForIn(data) {
    for (let i in data) {
      if (Object.prototype.toString.call(data) === '' || Object.prototype.toString.call(data) === '') {
      that.funForIn(data)
      } else {
      if (data == 'dbServerDate') {
          data = db.serverDate()
      }
      }
    }
},

// 调用

   const data = {
      name: 'playCloud',
      data: {
      doWhat: 'add',
      collection: 'staff',
      data: {
          field1: 'field1val',
          field2: 123,
          field3: {
            test3: 'test33',
            test333: 666666666,
            time: 'dbServerDate'
          },
          field4: ['aa', 321, 'bb', 'dbServerDate'],
          field5: true,
          field6: {
            "type": "Point",
            "coordinates":
          },
          field7: 'dbServerDate'
      }
      }
    }

    that.funForIn(data)

    console.log(data)

麦子1995 发表于 2021-9-13 09:04

chenjunuyue520 发表于 2021-9-22 10:24

厉害学习了。
页: [1]
查看完整版本: 分享一个JS递归遍历数组和对象,并替换指定字符的函数