正如@Thomas 所说,您可以将数组保存在地图对象中。
在将对象放入 ScriptDB 之前,您也不需要执行复制操作。您可以简单地保存数组db.save({myArray})
,并记住 ID。
这是一些要演示的极简代码。我展示了两种检索您保存的数组的方法 - 一种通过 ID,这似乎是您计划的方式,但也是使用“键”值进行查询的第二种方式。如果您希望在以后的代码运行中检索 ScriptDB 的内容,则这种方法无需以某种方式记住存储数组的 ID。
function saveArray (currentArray) {
var db = ScriptDb.getMyDb();
return db.save({type: "savedArray", data:currentArray}).getId();
}
function loadArrayById (id) {
var db = ScriptDb.getMyDb();
return db.load(id).data;
}
function loadArrayByType () {
var db = ScriptDb.getMyDb();
var result = db.query({type: "savedArray"});
if (result.hasNext()) {
return result.next().data;
}
else {
return [];
}
}
function test() {
var arr = ['this','is','a','test'];
var savedId = saveArray( arr );
var loaded1 = loadArrayById( savedId );
var loaded2 = loadArrayByType();
debugger; // pause if running debugger
}
这是您在调试器暂停时看到的内容:
请注意,通过使用 map 标记data
从保存的对象中提取数组,两者loaded1
和loaded2
都与源数组相同arr
。