Javascript 使用在集合中获得的值,从包含该集合的数组中推送值';将索引分为不同的数组 问题

Javascript 使用在集合中获得的值,从包含该集合的数组中推送值';将索引分为不同的数组 问题,javascript,arrays,angular,typescript,set,Javascript,Arrays,Angular,Typescript,Set,所以我有一个很大的数据表,它包含一些我并不真正关心的数据和一些不关心的数据,所以我尝试将我真正关心的数据填充到一个更小、更紧凑的表中。通过使用正则表达式,我能够找到包含我确实关心的信息的索引,并将它们放在一个集合中。下面显示了我是如何做到这一点的 导入Excel工作表 onFileChange(事件:任意) { const inputFile:DataTransfer=(event.target); const fileReader:fileReader=newfilereader(); fil

所以我有一个很大的数据表,它包含一些我并不真正关心的数据和一些不关心的数据,所以我尝试将我真正关心的数据填充到一个更小、更紧凑的表中。通过使用正则表达式,我能够找到包含我确实关心的信息的索引,并将它们放在一个集合中。下面显示了我是如何做到这一点的

导入Excel工作表
onFileChange(事件:任意)
{
const inputFile:DataTransfer=(event.target);
const fileReader:fileReader=newfilereader();
fileReader.onload=(事件:any)=>
{
const binaryString:string=event.target.result;
常量工作簿:XLSX.workBook=XLSX.read(二进制字符串,{type:'binary',sheetStubs:true});
/*sheetstubs true应该显示空单元格,但不是*/
常量工作表名称:string=workBook.SheetNames[0];
常量工作表:XLSX.workSheet=workBook.Sheets[workSheetName];
this.data=(XLSX.utils.sheet_到_json(工作表,
{header:1,blankrows:true});
};
fileReader.readAsBinaryString(inputFile.files[0]);
}
这样做的目的是读取excel工作表,并使其成为数组对象,其中每个数组都是excel工作表的一行。因此,为了找到我想要的,我创建了以下函数“

columnsWithManufacturer()
{
var someManufacturers=[//一组正则表达式短语的列表//];
var manColumnIndexes=new Set();
对于(某些制造商的var制造商)
{
for(此.data的常量行)
{
对于(变量单元格=0;单元格<行长度;单元格++)
{
if(制造商试验(行[单元])
{
manColumnIndexes.add(单元格)
}
}
}
}
返回列索引
}
单元格的值实际上是excel工作表中数据所在的列值,集合是找到数据的所有唯一列号。我试图做的是将我找到的每一列基本上推送到一个单独的数组中。因此,如果在第14、16和17列中找到信息,我想推一个使用单独的函数将第14列中的数据全部装入数组,第16列中的所有数据装入数组,第17列中的所有数据装入数组

我试过的 现在创建一个新函数,我尝试了以下方法:

pushToSeparateArrays()
{
var manufacturersarray=[this.primaryManufactureArray,this.altmanufacturer,this.altmanufacturer2,this.altmanufacturer3]
var manufactureindex=this.columnsWithManufacturer()
用于(制造商阵列的var阵列)
{
for(此.data中的var行)
{
.forEach((值)=>
{
array.push(此.data[row][Number(value)])
})
}
} 
}

但我现在意识到,这最终会将所有列值中的所有数据推送到所有数组中。我是否缺少一个步骤,以便我能够完成我试图在将数据分离到不同数组中时实现的目标?

我认为问题在于,您对每个
生产都执行相同的操作r阵列
无任何条件

一种方法是维护感兴趣的列及其数组的映射。请参见以下内容:

const数据=[
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
];
函数列SwithManufacturer(){
返回新集合([0,1,4]);
}
函数pushToSeparateArrays(){
const columns=columnsWithManufacturer();
const interestingColumns=新映射();
columns.forEach(column=>{
常量数组=[];
interestingColumns.set(列、数组);
data.forEach(行=>{
常量cellValue=行[列];
array.push(cellValue);
});
});
返回兴趣列;
}
const interestingColumns=pushToSeparateArrays();
log(Array.from(interestingColumns.get(0));
log(Array.from(interestingColumns.get(1));

log(Array.from(interestingColumns.get(4)))
这真是太棒了,实际上我不知道这是JS中使用的映射。我想知道这些数组是否可以保存到各自的变量中,而数组的数量取决于集合中的值的数量?或者这是我可能不得不问另一个问题的原因吗我可以在集合中重复,并使用适当的*ngFor语句来实现我想要的