【问题标题】:How to bind an array of objects in a tabular format?如何以表格格式绑定对象数组?
【发布时间】:2021-07-18 11:36:36
【问题描述】:

我正在尝试解决这个问题,也许是问题的措辞对我来说很复杂。但任务基本上是计算对象数组中所有字符串的实例。

我尝试了一些实用的实用方法,例如 filter 和 reduce,但无法正确使用。

    let users = [
  {
    id: 1,
    name: "Babloo",
    
  },
  {
    id: 2,
    name: "Raam",
    
  },
  {
    id: 3,
    name: "Shyam",
    
  },
  {
    id: 4,
    name: "Balraam",
    
  },
  {
    id: 5,
    name: "Sunder",
    
  },
  {
    id: 6,
    name: "Balraam",
    
  },
  {
    id: 7,
    name: "Mahesh",
    
  }
]
// Bind this Array in a tabular format. 

我希望输出是

Name | Repeat Count

Balram | 2

【问题讨论】:

标签: javascript arrays algorithm sorting functional-programming


【解决方案1】:

考虑使用MapArray#filter

您还可以使用结果创建table

const table = document.querySelector("#table");

const 
  users=[{id:1,name:"Babloo"},{id:2,name:"Raam"},{id:3,name:"Shyam"},{id:4,name:"Balraam"},{id:5,name:"Sunder"},{id:6,name:"Balraam"},{id:7,name:"Mahesh"}],

  res = Array.from(users.reduce((m, { name }) => (m.set(name, (m.get(name) || 0) + 1), m), new Map()));
  
res.forEach(([name, count]) => {
  const tr = document.createElement("tr");
  const tdName = document.createElement("td");
  const tdCount = document.createElement("td");

  tdName.innerText = name;
  tdCount.innerText = count;

  tr.appendChild(tdName);
  tr.appendChild(tdCount);

  table.appendChild(tr);
});

console.log(JSON.stringify(res));
#table td {
  border: 1px solid black;
}
<table id="table">
</table>

【讨论】:

  • 你能给我解释一下,reduce函数是怎么回事?
  • @siddhant reduce 回调将针对数组中的每个项目运行,并且在其中我们正在增加 name 的计数。我更新了我的答案,用数据创建了一个table。你可以阅读更多关于reducehereMaphere
【解决方案2】:

您可以使用Array#reducename 分组。然后像这样使用Object.entries 结合Array#map

let users = [{id:1,name:"Babloo",},{id:2,name:"Raam",},{id:3,name:"Shyam",},{id:4,name:"Balraam",},{id:5,name:"Sunder",},{id:6,name:"Balraam",},{id:7,name:"Mahesh",}];

const groupingData = users.reduce((acc, {name}) => 
                    (acc[name] = (acc[name] || 0) + 1, acc), {});
const result = Object.entries(groupingData).map(([key, value]) => 
                    ({name: key, Repeat_Count: value}));
console.log(result);

【讨论】:

  • 是的,确实如此。但是我们必须以表格格式呈现的部分呢?它是某种形式的技术术语吗?
  • 这取决于您使用的语言。根据您的规范化数据,您可以根据需要进行迭代。 @siddhant
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 2021-10-30
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2020-10-02
相关资源
最近更新 更多