首页 > 解决方案 > 使用打字稿对逗号分隔的数字列表求和

问题描述

我有一个数据表,其中显示了一些包含用户输入的值的行和列。我想计算使用打字稿输入但难以找到解决方案的列的总和:

// class
export class DataTable {
    public constructor(id: string) {
        this.id = id;
    }

    public readonly id: string;
    public rowCount: number = 0;
    public columnCount: number = 0;
}

从“../DataTable/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() {
                console.log(`AddColumn: ${this.columnName} = ${this.columnValuesAsCsv}`);
                // this.table....
            },

            onAddRow() {
                console.log(`Add Row: ${this.rowValuesAsCsv}`);
                // this.table....
            },

            onSum() {
                if (this.columnValuesAsCsv !== null) {
                  let columnSum = this.columnValuesAsCsv.split(",");
                  columnSum = this.columnValuesAsCsv.reduce((acc: number, item: string) => acc += parseInt(item), 0);
                  console.log(columnSum);
                } else {
                    console.log('There are no column numbers entered');
                }
            },
        }
    }

我在 html 中为 UI 设置了一些表单和按钮,用户可以在控制台中创建一些行和列,然后计算总和。目前我得到 01,2,3 作为总和结果,如果没有添加列而不是该字符串消息,则得到 0。

标签: typescriptsum

解决方案


一个简单的reduce会有所帮助

...
onSum() {
  if (this.columnValuesAsCsv !== null) {
    const columnSum = this.columnValuesAsCsv.reduce((acc, item) => acc += parseInt(item), 0);
    console.log(columnSum);
  } else {
    ...
  }
}

您还需要将字符串解析为整数


推荐阅读