javascript - 如何使用 Javascript 从 html 表中选择唯一的 {key, last value}
问题描述
我有一个 html 表喜欢:
<table border="1">
<tr>
<td>apple</td>
<td>10</td>
</tr>
<tr>
<td>apple</td>
<td>7</td>
</tr>
<tr>
<td>banana</td>
<td>8</td>
</tr>
<tr>
<td>apple</td>
<td>9</td>
</tr>
<tr>
<td>cat</td>
<td>11</td>
</tr>
<tr>
<td>banana</td>
<td>7</td>
</tr>
<tr>
<td>cat</td>
<td>2</td>
</tr>
</table>
我应该如何在列上聚合这个表?
对于此示例,按第一列聚合表,以及与表中该键相关的最后一个值。
解决方案
好吧,我并没有真正了解您的过滤要求,但我理解的是您要根据某些要求进行过滤。所以总是尝试在 JS 端添加过滤逻辑,而不是在 HTML 上。因此,您可以像下面的代码示例一样在 JS 中维护它:
$(document).ready(function() {
this.json = {
"Students": [{
"id": "1",
"hometown": "London",
"gender": "Male",
"GPA": "8",
"name": "Lee",
},
{
"id": "2",
"hometown": "NY",
"gender": "Male",
"GPA": "9",
"name": "Shaldon",
}, {
"id": "3",
"hometown": "Paris",
"gender": "Female",
"GPA": "7",
"name": "Julie",
}
]
};
this.renderTable = function(Students) {
var tbody = document.getElementById('tbody');
tbody.innerHTML = "";
for (var i = 0; i < Students.length; i++) {
var tr = "<tr>";
tr += "<td>ID</td>" + "<td>" + Students[i].id + "</td></tr>";
tr += "<td>HomeTown</td>" + "<td>" + Students[i].hometown + "</td></tr>";
tr += "<td>Gender</td>" + "<td>" + Students[i].gender + "</td></tr>";
tr += "<td>GPA</td>" + "<td>" + Students[i].GPA + "</td></tr>";
tr += "<td>NAME</td>" + "<td>" + Students[i].name + "</td></tr>";
tr += "<hr>";
tbody.innerHTML += tr;
}
}
this.renderTable(this.json.Students);
console.log(this.json.Students);
//code for filtering//
this.Filter = function() {
var search = document.getElementById('search');
var category = document.getElementById('category');
var filteredObj = this.json.Students;
filteredObj = $.map(this.json.Students, function(val, key) {
if (search.value === val[category.value]) return val;
});
filteredObj.length>0 ? this.renderTable(filteredObj) : this.renderTable(this.json.Students);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<p></p>
<input id="search" type="search">
<select id = "category">
<option value = "select">select</option>
<option value = "id">ID</option>
<option value = "hometown">HomeTown</option>
<option value = "gender">Gender</option>
<option value = "GPA">GPA</option>
<option value = "name">NAME</option>
</select>
<button onclick="Filter()">Filter</button>
<table>
<tbody id="tbody"></tbody>
</table>
推荐阅读
- django - 从 django 模板中的小 mce 中删除底部品牌
- php - Laravel Live 电线增量减量不起作用
- perl - 无法在 Windows 10 中使用 cpan 安装 Imager::File::PNG
- c# - Xamarin 的 Device.StartTimer 重叠
- mysql - MYSQL 连接两个表并组合行值
- laravel - Laravel:具有特征的范围方法
- discord.js - discord.js 向新频道发送消息
- python - Python检索不断更新的嵌套字典中的最后一个键
- css - 过渡不透明度影响父元素的渲染
- python - 将熊猫数据框转换为嵌套的 json