javascript - 您可以将索引号数组传递给数组 push 方法,而不是在 push 中具体指定每个索引吗

标签 javascript google-apps-script google-sheets

我想从另一个二维数组创建一个新的二维数组,保留原始数组中在变量中定义的特定列。

我有一个工作版本,它使用硬编码值来保留原始数组中的哪些列,但我需要一个使用变量的版本。

var data = [
             [1,5,7,8,9,98,56],
             [4,7,8,9,2,55,88],
             [3,3,4,3,3,24,11]
            ];

 var indexes2Keep = [0,2,6]; 

 data.forEach(function(row) {
    slicedData.push( [ row[2], row[4], row[6] ] );
 });

我如何使用变量 indexes2Keep 的值来提供相同的结果,而不是在数组推送方法中对列进行硬编码。

谢谢

预期输出是:

slicedData = [
         [1,7,56],
         [4,8,88],
         [3,4,11]
        ];

最佳答案

你可以使用Array.map/Array.filter:

var data = [
         [1,5,7,8,9,98,56],
         [4,7,8,9,2,55,88],
         [3,3,4,3,3,24,11]
        ];

var indexes2Keep = [0,2,6]; 
var slicedData = data.map(function (row){
  return row.filter(function(_,i){
     return indexes2Keep.indexOf(i) !== -1
  })
})
//Alternatively
var slicedData2 = data.map(function (row){
  return indexes2Keep.map(function(i){
     return row[i]
  })
})
console.log(slicedData)
console.log(slicedData2)

关于javascript - 您可以将索引号数组传递给数组 push 方法,而不是在 push 中具体指定每个索引吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57665789/

相关文章:

javascript - *服务器端* Google Apps 容器绑定(bind)脚本中的 jQuery 库

javascript - 通过将数据作为单个数组而不是单独的列进行优化

javascript - 如何在 Google 表格/应用程序脚本中定位和迭代某一特定列(按列名称)?

javascript - 使用正则表达式按单词或运算符拆分

javascript - 如果用户 5 秒没有滚动,如何平滑滚动到 anchor ?

javascript - 获取json中某个键的索引

javascript - 构建 HTML 时属性 ID 无效

javascript - 如何使用两个按钮启动和停止执行 JavaScript 脚本?

javascript - Google 表格应用程序脚本 : Can you write an array to a single row instead of a single column?

google-sheets - Google Sheets 使用 Arrayformula 进行查询功能