gpt4 book ai didi

javascript - 谷歌应用脚​​本: Cannot get data from object loaded from ScriptDB

转载 作者:行者123 更新时间:2023-11-28 01:40:46 26 4
gpt4 key购买 nike

从 scriptDB 收到对象后,我无法访问它的某些字段。该字段带有数字键。如果取消注释该行

//  var item2 = obj2['test']['2']['f']

这会导致运行时错误。

完整代码为:

function test() {
var obj1 =
{
type: 'object',
name: 'test',
test:
{
F: 'foo',
B: {f: 'foooo', b: 'baaar', },
1: 'foo',
2: {f: 'foooo', b: 'baaar', },
},
};

var db = ScriptDb.getMyDb();
var id = db.save(obj1).getId();
var obj2 = db.load(id);

db.removeById(id);

var item1 = obj1['test']['2']['f']; // item1 = "foooo"
// var item2 = obj2['test']['2']['f']; // Runtime error!

var item3 = obj2['test']; // item3 = ({'2':{f:"foooo", b:"baaar"}, F:"foo", '1':"foo", B:{f:"foooo", b:"baaar"}})
var item4 = obj2['test']['2']; // item4 = undefined!!! Why?!!!
var item5 = obj1['test']['2']; // item5 = ({f:"foooo", b:"baaar"})
var item6 = obj2['test']['B']; // item6 = ({f:"foooo", b:"baaar"})
var item7 = obj2['test']['B']['f']; // item7 = "foooo"

return
}

如您所见,不可能获取对象:

var item4 = obj2['test']['2']; // item4 = undefined 

同时:

var item5 = obj1['test']['2'];

从原始 obj1 返回正确的对象,并且

var item6 = obj2['test']['B'];      

从 obj2 返回一个类似的对象。有什么问题吗?

附注obj1 和 obj2 之间的唯一区别(将它们保存到 scriptDB 之前和之后) - obj2 中的数字键中存在引号。

最佳答案

你应该加注星标issue 3390 (齐格·曼德尔发表)。

现在谈谈您的问题的解决方案。最好的办法是避免使用数字键,但如果您不能这样做,那么一个简单的解决方法是字符串化并重新解析 ScriptDb 返回的对象。

var obj2 = JSON.parse(db.load(id).toJson());

这样做的缺点是您无法不修改 obj2,然后将更新保存回 ScriptDb。如果您不在其他地方使用对象 ID,则可以随时删除原始对象并将“更改”保存为新对象。

关于javascript - 谷歌应用脚​​本: Cannot get data from object loaded from ScriptDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20953228/

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