gpt4 book ai didi

arrays - 如何在 Google Sheet 的 App Script 中创建数组的真正新副本?

转载 作者:行者123 更新时间:2023-12-01 13:28:56 30 4
gpt4 key购买 nike

我在 Google Sheet 中的 App Script 遇到以下问题。

我想在我的工作表中基于表格制作一行的不同副本。我想做类似的事情

input1=[[1,2,"a"]];
input2=[[4,5,"b"],[7,8,"c"]];
function (input1,input2) {
\\ input# is a row, ie. an array with single element, which is another array
\\ The rows input# represent are of equal length

out=[];
copy1=input1[0];//copy1 is a reference to input1[0]
copy2=input1[0];//copy2 is a reference to input1[0]
for (i=0;i<input1.length,i++) {//input1.length is 1
copy1[i]+=input2[0][i];
copy2[i]+=input2[1][i];
}
out.push(copy1,copy2);//copy1=[5,2,a] copy2=[8,2,a]
return out
}

我希望 out看起来像
out=[[5,7,"ab"],[8,10,"ac"]];//[[5,2,a],[8,2,a]]

但事实并非如此。每当我修改 copy1 时,输出看起来像或 copy2 ,它是 input1本身被修改。

这里有什么问题?如何创建一个新的数组变量,将其值分配为与现有数组相等并修改新数组而不更改旧数组?输入数组的元素(元素)由混合数字和字符串组成是否可以?

最佳答案

使用 Slice() 返回数组的副本

试试这个方法:

function myFunction(input1,input2) 
{
var input1=[[1,2,"a"]];
var input2=[[4,5,"b"],[7,8,"c"]];
var out=[];
var copy1=input1[0].slice();//slice returns a copy of the array
var copy2=input1[0].slice();
for (var i=0;i<input1[0].length;i++)//looping through all of elements of input1[0];
{
copy1[i]+=input2[0][i];
copy2[i]+=input2[1][i];
}
out.push(copy1,copy2);
Logger.log(out);//out=[[5,7,"ab"],[8,10,"ac"]];
}

For more information on slice look here.



这是一个很好的问题。我自己也为此挣扎过几次。

关于arrays - 如何在 Google Sheet 的 App Script 中创建数组的真正新副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019362/

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