gpt4 book ai didi

javascript - 获取对象字面量内定义的符号的值并迭代其值

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:52 26 4
gpt4 key购买 nike

我有一个如下所示的对象文字。

{
is_active: true,
start_date: { [Symbol(lt)]: 2020-02-24T12:56:36.780Z },
expiry_date: { [Symbol(gt)]: 2020-02-24T12:56:36.780Z },
[Symbol(or)]: [ { user_id: 'M' }, { user_id: null } ]
}

这些对象是在查询数据库之前由sequelize自动生成的

我需要迭代所有对象键并更改该键的值,即 id 或以 _id 结尾。
这是我第一次使用符号数据类型。我读了一篇文章here ,它表示不能使用 for...inobject...keys
进行迭代我还读了一个答案here ,但只说了如何访问。
下面是我的函数,它递归地遍历对象并解密 id 和以 _id

结尾的键的值
   function decryptIds(obj) {
if (typeof obj === 'object' && obj !== null) {
for (let key in obj) {
if (Array.isArray(obj[key])) {
for(let i = 0; i< obj[key].length; i++) {
if(typeof obj[key][i] === 'object' && obj[key][i] !==null)
decryptIds(obj[key][i].where)
else
obj[key][i] = decrypt(obj[key][i])
}
} else if (typeof obj[key] === 'object' && obj !== null) {
decryptIds(obj[key].where)
}
else if (key === 'id' || key.endsWith('_id')) {
obj[key] = decrypt(obj[key])
}
}
}
return
}
decryptIds(model.where)

最佳答案

不知何故,我设法做到了。我知道这不是解决方案,它很容易实现。我会继续尝试,直到找到更好的方法。目前还可以。

      beforeFind: (model, options) => {
function decryptIds(obj) {
if(typeof obj === 'object' && obj!==snull &&Object.getOwnPropertySymbols(obj)) {
const objectSymbols = obj[Object.getOwnPropertySymbols(obj)[0]]
if(objectSymbols) {
objectSymbols.forEach(el => {
decryptIds(el)
})
}
}
if (typeof obj === 'object' && obj !== null) {
for (let key in obj) {
if (Array.isArray(obj[key])) {
for(let i = 0; i< obj[key].length; i++) {
if(typeof obj[key][i] === 'object' && obj[key][i] !==null)
decryptIds(obj[key][i].where)
else
obj[key][i] = decrypt(obj[key][i])
}
}
else if (key === 'id' || key.endsWith('_id')) {
if(obj[key]) {
obj[key] = decrypt(obj[key])
}
} else if (typeof obj[key] === 'object' && obj !== null) {
decryptIds(obj[key].where)
}
}
}
return
}
console.log(model.where)
decryptIds(model.where)
console.log(model.where)
},

关于javascript - 获取对象字面量内定义的符号的值并迭代其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60376781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com