【发布时间】:2019-01-27 10:30:24
【问题描述】:
我正在尝试使用 Google App Script 中的拼接提取二维数组的子集。 A 是从中创建两个数组 info[] 和 ttdata[] 的输入数组。以下是代码:
function SpliceTest()
{
var A = [[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6],
["","","","1","",""],["","","","","2",""]]
Logger.log(A)
var spliced = SpliceData(A)
Logger.log(A)
}
function SpliceData(data)
{
var info = []
var ttdata = []
for(var j = 0; j < 2; j++)
{
info[j] = data[j].splice(4, 2)
}
for(var j = 2; j < data.length; j++)
{
ttdata[j-2] = data[j].splice(0, 4)
}
return [info, ttdata]
}
问题是,执行 spliceData 子例程会修改输入数组 A,我无法理解。
下面是SpliceData子程序执行前后A的值。
[19-01-25 11:28:05:493 CET] [[1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [, , , 1, , ], [, , , , 2, ]]
[19-01-25 11:28:05:494 CET] [[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [5.0, 6.0], [, ], [2, ]]
【问题讨论】:
-
你有什么不明白的?预期的输出是什么?
-
您的意思可能是
slice而不是splice。拼接明确意味着将某物从一个地方移植到另一个地方,例如“基因剪接”。 -
我希望提取 A 的 2 个子集并将它们放入数组 info[] 和 ttdata[] 中。这部分我实现了,但我还需要现在丢失的原始 A。我不明白这部分为什么要修改 A。
-
为什么不在开始之前复制数组 A。
-
我也尝试复制数组。但是副本也会在执行 splice 子程序后被修改。
标签: javascript arrays google-apps-script