Javascript 如何在一个值数组中循环以优化对函数的调用次数?

Javascript 如何在一个值数组中循环以优化对函数的调用次数?,javascript,arrays,algorithm,performance,google-sheets,Javascript,Arrays,Algorithm,Performance,Google Sheets,我有一个谷歌电子表格中的行数组,其中的数字介于1和800之间: var rowPositions = [1,3,4,5,9,10,11,12...795,799,800] 为了提高效率,我需要对函数deleteRows进行API调用,该函数接受两个参数: deleteRows(positionOfFirstRow, howManyRowsShouldBeDeletedStartingFromFirstRow) 如何在Javascript中创建一个函数,对给定数组调用deleteRows的次

我有一个谷歌电子表格中的行数组,其中的数字介于1和800之间:

var rowPositions = [1,3,4,5,9,10,11,12...795,799,800]
为了提高效率,我需要对函数deleteRows进行API调用,该函数接受两个参数:

deleteRows(positionOfFirstRow, howManyRowsShouldBeDeletedStartingFromFirstRow)

如何在Javascript中创建一个函数,对给定数组调用deleteRows的次数最少?即,以上述数组为例,函数调用deleteRows删除位置1处的行,然后再次调用它删除3,4,5,然后再次删除10,11,12等

换句话说,如何将该行位置数组转换为二维数组,例如:

var 2DrowPositions = [[1,1],[3,2],[5,1],[9,4]]

然后,我可以使用它按提供的坐标调用deleteRows函数一次。

如果给您一个要删除的项目数组,如
[1,3,4,5,7,8,9,15,18,19,20,23]
您可以单步遍历该数组并查找连续的数字。记录您看到的连续数字的数量,当您点击一个非连续数字时,保存旧数字并重新开始

这里有一种方法可以做到这一点,它相当容易阅读:

let del=[1,3,4,5,7,8,9,15,18,19,20,23]
让res=[]
让curr={start:del[0],count:0}
del.forEach((项目,i,arr)=>{
如果(i==0 | | arr[i]==1+arr[i-1])当前计数++
否则{
资源推送(当前)
curr={start:arr[i],count:1}
}
})
资源推送(当前)

console.log(res)
是的,我想是的@DavidThomasBear记住我发布了无效的JavaScript,应该是:
[[1,1],[3,3]]
。我的错。我建议你仔细考虑你想要的最终结果,在你的问题中公布你想要的结果,以及你对如何使用你的解决方案的理解;这样,人们更容易理解如何帮助他人。