工作需要,有一个JS对象中可能包含一个或多个字符串'dbServerDate',而且位置不定,我需要将它替换为另一个符号,例如db.serverDate()(微信小程序云函数的服务器时间)。
可见db.serverDate()的个值使用JSON.parse+JSON.stringify是对报错的,所以自己写了一个递归来实现替换,分享一下代码。也欢迎各位指教。
[Asm] 纯文本查看 复制代码 // 递归遍历并替换指定值
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] = 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": [113, 23]
},
field7: 'dbServerDate'
}
}
}
that.funForIn(data)
console.log(data) |