吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1069|回复: 5
收起左侧

[求助] JS对象替换多个属性的问题。

[复制链接]
cqwcns 发表于 2021-9-12 11:29
我有一个对象,其中有多个'dbServerDate'这样的字符串,当然它的位置和数量都不是固定的。
我需要将'dbServerDate'全部替换为另一个变量,例如替换成thisTime。
递归遍历肯定不是正道,各位大佬有什么好的方法,指教一下,谢谢。

[JavaScript] 纯文本查看 复制代码
      data: {
        doWhat: 'add',
        collection: 'staff',
        data: {
          field1: 'field1val',
          field2: 123,
          field3: {
            test3: 'test33',
            test333: 123888,
            time: 'dbServerDate'
          },
          field4: ['aa', 321, 'bb', 'dbServerDate'],
          field5: true,
          field6: {
            "type": "Point",
            "coordinates": [113, 23]
          },
          field7: 'dbServerDate'
        }
      }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cube 发表于 2021-9-12 12:32
[JavaScript] 纯文本查看 复制代码
let val1 = 123
eval('data = ' + JSON.stringify(data).replaceAll("\"dbServerDate\"","`${var1}`"))
涛之雨 发表于 2021-9-12 13:10
本帖最后由 涛之雨 于 2021-9-12 13:12 编辑

如果没有json不支持的内容,转字符串然后重新解析回去是最好的了
但是不推荐楼上的eval解析回json,最好还是JSON.parse解析回去
然后如果需要格式化输出parse也可以非常方便的格式化输出
 楼主| cqwcns 发表于 2021-9-12 14:09
这样?

[JavaScript] 纯文本查看 复制代码
JSON.parse(JSON.stringify(data).replace(/"dbServerDate"/g, '"thisTime"'))



不知道map函数能不能实现这个需求。
 楼主| cqwcns 发表于 2021-9-12 14:26
涛之雨 发表于 2021-9-12 13:10
如果没有json不支持的内容,转字符串然后重新解析回去是最好的了
但是不推荐楼上的eval解析回json,最好还 ...

测试了一下,还真有json不支持的内容的内容,微信小程序云函数中,有个系统时间是这样写的db.serverDate(),替换后parse不回来了。
 楼主| cqwcns 发表于 2021-9-12 21:42
最后用了这个办法。


[JavaScript] 纯文本查看 复制代码
   // 递归遍历并替换指定值
  funForIn(data) {
    for (let i in data) {
      if (Object.prototype.toString.call(data[i]) === '[object Array]' || Object.prototype.toString.call(data[i]) === '[object Object]') {
        that.funForIn(data[i])
      } else {
        if (data[i] == 'dbServerDate') {
          data[i] = 'thisNow'
        }
      }
    }
  },

// 调用

   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": [113, 23]
          },
          field7: 'dbServerDate'
        }
      }
    }

    that.funForIn(data)

    console.log(data)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
涛之雨 + 1 + 1 用心讨论,共获提升!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表