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可能更好!