У меня возникли проблемы с созданием нового массива, который несколько раз повторяет несколько элементов другого массива через Google Apps Script.
Например, массив, с которого я начинаю, выглядит следующим образом:
var sourceArray = [
[['A', 1], ['B', 1]]
]
Я хотел бы иметь возможность создать новый массив, который повторяет элементы, которые массив X число раз. Скажем, если я захочу повторить эти элементы 3 раза, я получу следующий новый массив в результате:
var newArray = [
[['A', 1], ['B', 1]],
[['A', 1], ['B', 1]],
[['A', 1], ['B', 1]]
]
Я смог сделать это, используя следующую функцию, найденную здесь в StackOverFlow:
function mutateArray(arr,n){
var temp = [];
while(n--) Array.prototype.push.apply(temp,arr);
return temp;
}
После того, как я запустил эту функцию следующим образом, я получил «newArray», описанный выше:
mutateArray(sourceArray,3);
Однако, хотя эта функция и создала новый массив, содержащий элементы sourceArray3 раза я столкнулся с проблемой: я не могу вносить изменения в элементы newArray индивидуально. Для иллюстрации, если я попытаюсь изменить первый ['A', 1]
на ['A', 2]
следующим образом ...
newArray[0][0][1] = 2;
... это изменит не только первый ['A', 1]
, но все из них.
Исходя из того, что я мог понять, проблема в том, что при создании newArray используемый мной метод создавал не три разных подмассива с одинаковыми значениями, а три ссылки на одно и то же. массив. Так что это мой вопрос: как я могу создать с помощью Google Apps Script новый массив, который повторяет несколько элементов другого массива несколько раз, убедившись, что этот новый массив содержит истинных копий из (не только ссылается на)исходный массив.