Google Apps 脚本拼接方法奇怪

问题描述 投票:0回答:1

splice 似乎在拼接的元素和拼接它们的元素之间创建了一种动态关系......???

假设我有一个数组 数组 = [ [1 , 2 , 3] ]

我想复制此列并将新列的最后一个值更改为 4。我使用了: 虚无 = Array.splice(0,0,Array[0]); 数组[1][2] = 4;

然而,这会导致 数组 = [ [ 1 , 2 , 4 ] , [ 1 , 2 , 4 ] ]

这是一个精简的示例,在实际问题中,我正在迭代解决方案,在每一步添加可能性,因此嵌套循环会变得混乱......

见解?? ..或者:如何复制数组中间的一列并更改其中一个值?

google-apps-script splice
1个回答
0
投票

我相信您的目标如下。

  • 您想要使用 Google Apps 脚本实现
    [[1, 2, 3]]
    [[1, 2, 3, 4]]

修改要点:

  • 首先,
    Array
    是一个对象。在这种情况下,我建议重命名变量
    Array
  • 对于
    array.splice(0, 0, array[0])
    [1, 2, 3]
    会插入到顶部元素。
  • 并且,在
    array[1][2] = 4
    处,
    3
    中的
    [1, 2, 3]
    被替换为
    4
    。此外,在这种情况下,两个元素都会通过引用传递而更改。这样,结果就是
    [ [ 1 , 2 , 4] , [ 1 , 2 , 4] ]

当这些点体现在脚本中时,下面的修改如何?

修改脚本:

// If you want to use splice.
const array1 = [[1, 2, 3]];
array1.forEach(row => row.splice(row.length, 0, 4));
console.log(array1); // [ [ 1, 2, 3, 4 ] ]

// Another approach 1
const array2 = [[1, 2, 3]];
array2.forEach(row => row.push(4));
console.log(array2); // [ [ 1, 2, 3, 4 ] ]

// Another approach 3
const array3 = [[1, 2, 3]];
const res = array3.map(row => [...row, 4]);
console.log(res); // [ [ 1, 2, 3, 4 ] ]

  • 这些脚本从
    [ [ 1, 2, 3, 4 ] ]
    返回与
    [[1, 2, 3]]
    相同的结果。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.