【问题标题】:Remove a row from an Array of values by row index按行索引从值数组中删除一行
【发布时间】:2019-07-14 13:10:37
【问题描述】:

我想按行索引从数组中删除行

我有

function test() {
arr1 = [[Id, From, To], [1.0, AA1, BB1], [2.0, AA2, BB2], [3.0, AA3, BB3], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

arr1.splice(1,1);
return arr1
}

我明白了

[[Id, From, To], [2.0, AA2, BB2], [3.0, AA3, BB3], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

这就是我想要的

但如果我有的话

function test() {
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
arr1 = [[Id, From, To], [1.0, AA1, BB1], [2.0, AA2, BB2], [3.0, AA3, BB3], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

var result = arr1.splice(1,1);

sht.getRange(1,1,result.length,result[0].length).setValues(result)
}

我明白了

result = [[1.0, AA1, BB1]]

我不明白发生了什么,我怎么得到

result = [[Id, From, To], [2.0, AA2, BB2], [3.0, AA3, BB3], [4.0, AA4, BB4], [5.0, AA5, BB5], [6.0, AA6, BB6]]

【问题讨论】:

  • 为什么不简单地使用方法deleteRow方法?
  • 返回 arr1 而不是结果数组
  • @CodeManiac 与 js 本身可以做的事情相比,它会很慢。
  • @op 引用您的字符串:[["Id", "From","To"], [1.0,.. 或提供数字数组。否则,您的示例无法重现。

标签: javascript arrays google-apps-script google-sheets


【解决方案1】:

请仔细阅读splice() 方法的文档。在 Array 上调用时,它需要三个可能的参数:

  1. start - 要开始的 Array 元素的索引;
  2. deleteCount - 从start 开始要删除的元素数;
  3. item - 以逗号分隔的值列表,用于替换已删除的值。

场景 1

当您使用两个参数 splice(1,1) 调用它时,该方法从索引 1 ([1.0, AA1, BB1]) 开始,仅删除此元素并将其替换为空,变异原来的 Array 为预计。

场景 2

该方法还返回你删除的所有元素作为一个单独的Array,如果你想返回原来的Array(被splice()突变),你需要删除@ 987654335@,直接返回arr1

有用的链接

  1. splice()方法reference;

【讨论】:

  • 谢谢,奥列格。我想我终于得到了原始数组事物的mutating,当这种情况发生时,您不会分配给变量。在 VBA 中(我更熟悉,没有对应的,我知道
  • 很高兴我能帮上忙!请记住,Apps 脚本基于 JavaScript,因此遵守适用于 JS 的规则(大部分)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-02
  • 2021-11-06
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 2015-07-19
  • 2013-09-22
相关资源
最近更新 更多