【问题标题】:filter and remove empty columns from multiple table从多个表中过滤并删除空列
【发布时间】:2022-01-22 11:04:42
【问题描述】:

我正在使用tty-table 插件在我的控制台应用程序中打印表格

表格的实际结果包含许多列,其中一些包含“0”作为数据,请参见下面的示例

Product Stock Country Price
Samsung S20 0 Germany 0
Iphone 13 0 England 0
Samsung A71 0 US 0
SOne 0 UK 0

我想隐藏所有行的数据为 0 的列。 结果应该是:

Product Country
Samsung S20 Germany
Iphone 13 England
Samsung A71 US
SOne UK

在我的代码中,每一行都是一个数组,所以行的结果是一个数组数组:示例

[
["Samsung S20",0,"Germany",0],
["Iphone 13",0,"England",0],
["Samsung A71",0,"US",0],
["SOne",0,"UK",0],
]

你能帮我做这样的事情吗:

[
["Samsung S20","Germany"],
["Iphone 13","England"],
["Samsung A71","US"],
["SOne","UK"],
]

重要提示:表头是一个对象数组:

[{value:"Product"} , {value:"Stock"} ,{value:"Country"} ,{value:"Price"} }

列的外观取决于它们在标题数组中的存在

【问题讨论】:

    标签: javascript node.js arrays filter


    【解决方案1】:

    可能有一种更简单的方法,但一种选择是构建一个不包括零和列的表,然后提取标题和行以输入 tty-table:

    let headers = [
      { value: "Product" },
      { value: "Stock" },
      { value: "Country" },
      { value: "Price" }
    ]
    
    let rows = [
      ["Samsung S20", 0, "Germany", 0],
      ["Iphone 13", 0, "England", 0],
      ["Samsung A71", 0, "US", 0],
      ["SOne", 0, "UK", 0],
    ]
    
    let table = headers
      .map((h, index) => ({header: h.value, values: rows.map(sub => sub[index])}))
      .filter(item => item.values.reduce((a, b) => a + b, 0) !== 0)
    
    let newHeaders = table.map(item => ({value: item.header}))
    
    let tableRows = table.map(arr => arr.values)
    let newRows = tableRows[0].map((_, c) => tableRows.map(row => row[c]))
    
    console.log(newHeaders)
    console.log(newRows)

    【讨论】:

    • 不错的方法,但是在您的代码中,如果列的所有行都为零,您将删除标题,我认为这是正确的,但是当您创建 newRows 时,您正在删除如果项目是 0,则从单行中提取列。这意味着如果您有一列除了具有1 的一行之外,所有的列都包含0s,那么该列的标题仍然存在,但每一行都有一个零将被删除并因此“转移”到左一。我还建议的一个小改动是将第一个和最后一个 reduce 方法与 .map() 交换,因为您正在有效地使用两者进行映射操作
    • 感谢@NickParsons!接得好。我已经更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2010-09-20
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2013-04-22
    相关资源
    最近更新 更多