javascript - 具有唯一名称标题的表

标签 javascript jquery

我有一系列项目,大致如下:

[
    {name: "john", task: "dig"},
    {name: "john", task: "swim"},
    {name: "john", task: "eat"},
    {name: "paul", task: "dig"},
]

我想创建一个表,以便标题具有名称,然后是下面的任务,例如

john       paul
dig        dig
swim
eat

所以这里有人好心地告诉我有关reduce 函数的信息,但是我在以上述方式显示它时仍然遇到问题。

一旦我应用了reduce函数,我就迷失了,所以说:

var result = arr.reduce(function(table, element)
{
    if(!table[element.name])
    {
        table[element.name] = [];
    }
    table[element.name].push(element.task);
    return table;
}, {});
// For demo:
document.write(JSON.stringify(result));

如何使表格看起来像上面我想要的那样?

最佳答案

他们给了你一个很好的解决方案,我也认为 Array.prototype.reduce() 是最干净的方法。

现在您已经组织好了数据,让我们开始设计样式。

我们将迭代该对象来查找不同的(本例中为两个)属性。对于每个元素,我们将创建一个 divul 元素。

然后我们将迭代属性(一个数组)并创建一个li元素对于每一个。

最后一步,我们将使 div 元素设置为 float: left; 以保持它们并行。

当然,您也可以使用table元素。

var arr = [
    {name: 'john', task: 'dig'},
    {name: 'john', task: 'swim'},
    {name: 'john', task: 'eat'},
    {name: 'paul', task: 'dig'},
];
  
var result = arr.reduce(function(table, element) {
    if(!table[element.name]) { table[element.name] = []; }
    table[element.name].push(element.task);
    return table;
}, {});

$('body').append('<p>My data: ' + JSON.stringify(result) + '<p><hr>');

for (var key in result) {
  var html = '<div>' + key + '<ul>';
  for (var i = 0; i < result[key].length; i++) {
    html += '<li>' + result[key][i] + '</li>';
  }
  $('body').append(html + '</ul></div>');
}
div {
  float: left;
  width: 100px;
}
ul {
  list-style-type: none;
  padding: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

希望对你有帮助!

关于javascript - 具有唯一名称标题的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32497453/

相关文章:

javascript - 更新查询mongoDB中的增量值

javascript - 如何获取jsTree中选定节点的标题?

php - 如何在 Bootstrap 范围 slider 中获得两个值?

javascript - 世界地图粒子效果javascript

javascript - 获取在 Javascript 中提交后显示的 SPARQL 查询

javascript - 隐藏div中的jqGrid宽度不正确

javascript - 使用 nsIFileInputStream 和 nsIConverterInputStream 时加载的数据被 chop

javascript - 粘性标题过渡不平滑

php - 如何将我的 JSON 输出检索到 JavaScript 变量中?

jquery - "If"和 css 属性