【发布时间】:2021-02-20 01:11:51
【问题描述】:
我想创建一个类库来处理一些用户输入。用户可以使用列名和逗号分隔值在 UI 中添加列。我想对这些数据进行一些计算并将其呈现在数据表中。更具体地说,计算每个特定列的输入值的总和,而不考虑输入的值的数量,然后计算列的总和。我被困在如何计算数组中每个特定列的总和,然后计算这些列值的总和。非常感谢任何帮助。
// 类
export class DataTable {
public constructor(id: string) {
this.id = id;
}
public readonly id: string;
public rowCount: number = 0;
public columnCount: number = 0;
public columnName: string;
public columnValuesAsCsv: string;
public listOfColumns: any[] = [];
public listOfValues: any[] = [];
public addColumn(columnName: string, columnValuesAsCsv: string) {
this.columnName = columnName;
this.columnValuesAsCsv = columnValuesAsCsv;
this.listOfColumns.push(this.columnName);
while (this.listOfColumns.push()) {
this.listOfValues.push(this.columnValuesAsCsv);
break;
}
console.log(this.listOfColumns);
console.log(this.listOfValues);
this.rowCount = this.listOfValues.length;
this.columnCount = this.listOfColumns.length;
}
public calculateSum(resSum: number, name: any) {
if (this.columnName !== null && this.columnValuesAsCsv !== null) {
for (name of this.listOfColumns) {
//get the sum of column
resSum = this.listOfValues.reduce((acc: number, item: string) => acc += parseInt(item), 0);
}
return resSum;
}
}
// UI 的 .ts 文件
import { DataTable } from '../DataTable/DataTable';
export default
{
data() {
return {
table: new DataTable("ABC"),
tableId: "",
columnName: "",
columnValuesAsCsv: "",
rowValuesAsCsv: "",
}
},
methods:
{
onNewTable() {
console.log(`New Table: ${this.tableId}`);
// this.table....
},
onAddColumn() {
this.table.addColumn(this.columnName, this.columnValuesAsCsv);
console.log(this.columnName, this.columnValuesAsCsv);
},
onSum() {
const resSum = this.table.calculateSum();
console.log(`Sum of column values is: ${name}: ${resSum}`)
},
}
}
listOfColumns[] 的列名 p1,p2 由用户使用表单字段输入。lisfOfValues[] 的列值分别为 p1 (1,2)、p2 ( 3,4) 由用户使用表单域输入
我正在尝试计算每个 columnName 的总和并将其显示在这样的控制台上:“p1 的总和为:3”、“p2 的总和为:7”等...
最后我想显示:“列的总和是:10”(在这种情况下)。
我希望这能让它更清楚吗?
【问题讨论】:
-
我不确定我是否完全理解
calculateSum应该做什么(resSum是什么?),它应该汇总一个列吗?全桌?还有什么?如果是单列,您可能不需要 for 循环。如果整个表,嵌套reduce可能会完成这项工作。我的建议是,请创建一个代码框来重现场景以及输入和输出的一些明确定义(例如,给定此数据,返回该值) -
我已经用控制台中的 img 更新了我的原始帖子,说明我想要实现什么,希望现在更清楚吗?
标签: typescript algorithm sum