gpt4 book ai didi

javascript - 使用集合中获得的值,将包含该集合索引的数组中的值推送到单独的数组中

转载 作者:行者123 更新时间:2023-12-02 21:57:42 25 4
gpt4 key购买 nike

问题

所以我有一个很大的数据表,它包含一些我并不真正关心的数据,还有一些不是,所以我试图将我真正关心的数据填充到一个更小、更紧凑的表中。通过使用 RegEx,我能够找到包含我关心的信息的索引,并将它们放在一个集合中。下面显示了我如何执行此操作的片段

导入 Excel 工作表

onFileChange(event: any) 
{
const inputFile: DataTransfer = <DataTransfer>(event.target);
const fileReader: FileReader = new FileReader();
fileReader.onload = (event: any) =>
{
const binaryString: string = event.target.result;
const workBook: XLSX.WorkBook = XLSX.read(binaryString, { type: 'binary', sheetStubs: true});
/* sheetstubs true supposedly shows empty cells but isn't */

const workSheetName: string = workBook.SheetNames[0];
const workSheet: XLSX.WorkSheet = workBook.Sheets[workSheetName];

this.data = <Array>(XLSX.utils.sheet_to_json(workSheet,
{header: 1, blankrows: true }));
};
fileReader.readAsBinaryString(inputFile.files[0]);
}

它的作用是读取 Excel 工作表并将其放入数组对象中,其中每个数组都是 Excel 工作表的一行。因此,为了找到我想要的东西,我创建了以下函数”

columnsWithManufacturer()
{
var someManufacturers = [//list of a bunch of regex phrases//];
var manColumnIndexes = new Set();

for (var manufacturer of someManufacturers)
{
for (const row of this.data)
{
for (var cell=0; cell< row.length; cell++)
{
if (manufacturer.test(row[cell]))
{
manColumnIndexes.add(cell)
}
}
}
}
return manColumnIndexes
}

单元格的值实际上是Excel工作表中数据所在的列值,集合是找到数据的所有唯一列号。我想做的是将我找到的每一列基本上插入一个单独的数组中。因此,例如,如果在第 14、16 和 17 列中找到信息,我想将第 14 列中的所有数据插入一个数组,将第 16 列中的所有数据插入一个数组,将第 17 列中的所有数据插入一个数组使用单独的函数。

我尝试过的

现在创建一个新函数我尝试了以下操作:

pushIntoSeparateArrays()
{
var manufacturersArrays = [this.primaryManufactArray,this.altManufactArr,this.altManufactArr2,this.altManufactArr3]

var manufactIndexes = this.columnsWithManufacturer()

for (var array of manufacturersArrays)
{
for (var row in this.data)
{
manufactIndexes.forEach((value) =>
{
array.push(this.data[row][Number(value)])
})
}
}
}

但是,正如我现在意识到的那样,这最终的结果是将所有列值中的所有数据推送到所有数组中,我是否缺少一个步骤,以便我可以完成我在分离数据方面想要实现的目标到不同的数组?

最佳答案

我认为问题在于您在没有任何条件的情况下对每个 manufacturersArrays 执行相同的操作。

一种方法是维护您感兴趣的列及其数组的映射。见下文:

const data = [
[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],
];

function columnsWithManufacturer() {
return new Set([0, 1, 4]);
}

function pushIntoSeparateArrays() {
const columns = columnsWithManufacturer();
const interestingColumns = new Map();

columns.forEach(column => {
const array = [];
interestingColumns.set(column, array);

data.forEach(row => {
const cellValue = row[column];
array.push(cellValue);
});
});

return interestingColumns;
}

const interestingColumns = pushIntoSeparateArrays();
console.log(Array.from(interestingColumns.get(0)));
console.log(Array.from(interestingColumns.get(1)));
console.log(Array.from(interestingColumns.get(4)));

关于javascript - 使用集合中获得的值,将包含该集合索引的数组中的值推送到单独的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com