Javascript 是否可以将索引号数组传递给array push方法,而不是指定push中的每个索引

Javascript 是否可以将索引号数组传递给array push方法,而不是指定push中的每个索引,javascript,google-apps-script,google-sheets,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.fo

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

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

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的值来给出相同的结果,而不是在array push方法中硬编码列

谢谢

预期产出为:

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

只需在该数组上调用
.map
,即可将每个索引映射到行中该索引处的元素

data.forEach(函数(行){
slicedData.push(indexes2Keep.map(函数(索引){返回行[index]}));
});

您可以使用
map()
函数执行以下操作:


slicedData.push(indexes2Keep.map(index=>row[index])

您可以使用
Array.map
/
Array.filter

var数据=[
[1,5,7,8,9,98,56],
[4,7,8,9,2,55,88],
[3,3,4,3,3,24,11]
];
var指数保持=[0,2,6];
var slicedData=data.map(函数(行){
返回row.filter(函数(u,i){
返回index2keep.indexOf(i)!=-1
})
})
//或者
var slicedData2=data.map(函数(行){
返回index2keep.map(函数(i){
返回行[i]
})
})
console.log(slicedData)

console.log(slicedData2)
ES6表示法很棒-如果OP不想支持传统浏览器,这是一个很好的选择。我想如果原始代码使用
var
,老式的
函数
s可能更好!