Javascript:遍历对象数组以查找键值对并将它们呈现在表中 td
Javascript: loop through array of objects to find key value pair and render them in the table td
这是动态创建的下表代码,我想获取存储在TD中的最后2个值。 最后一个TD值采用"键-值-对"的形式。我想显示如下所示的内容:
<tbody>
{{#items}}
<tr>
<td>{{name}}</td>
<td>{{description}}</td>
<td id="newval">{{new_value}}</td>
<td id="oldval">{{old_value}}</td>
</tr>
{{/items}}
</tbody>
以下是从服务器获取的 JSON:
{
"result":"OK",
"items":[
{
"name":"abc",
"description":"desc",
"new_value":{
"description":"newvalue"
},
"old_value":{
"description":"oldvalue "
}
},
{
"name":"abc3",
"description":"desc2",
"new_value":{
"interval":"newvalue2"
},
"old_value":{
"interval":"oldvalue2 "
}
}
]
}
以下是JS:
$.each(lists,function(i,items){
for (var key in items) {
if(key == 'new_value'){
for(value in items[key]){
$("td#newval").html(value + " : " +items[key][value]);
}
}
}
});
同样,我正在为旧值执行此操作,只是替换"td"id 和值。但是正在发生的事情是,只有第一个TD使用数组中"new_value"的所有值进行更新,其余TD被渲染为空白。我想以这样一种方式显示,它将遍历数组并找到与"new_value"对象关联的键值对,并为各自的 td 呈现这两个值。
<td>description: newvalue</td>
<td>interval: newvalue2</td>
我怎样才能做到这一点?谢谢!
由于元素的 Id 必须是唯一的,因此您应该使用 的其他属性对元素进行分组。
这里一种可能的方法是使用类和数据属性来指定要映射到字段的属性,例如
var data = {
"result": "OK",
"items": [{
"name": "abc",
"description": "desc",
"new_value": {
"description": "newvalue"
},
"old_value": {
"description": "oldvalue "
}
}, {
"name": "abc3",
"description": "desc2",
"new_value": {
"interval": "newvalue2"
},
"old_value": {
"interval": "oldvalue2 "
}
}]
};
var trmap = {};
$('table tr').each(function() {
trmap[$(this).children(':first-child').text().trim()] = this;
});
$.each(data.items, function(i, item) {
if (trmap[item.name]) {
var $tr = $(trmap[item.name]);
$tr.find('.val').text(function() {
var key = $(this).data('key');
var arr = [];
$.each(item[key], function(key, value) {
arr.push(key + ': ' + value)
});
return arr.join('');
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>abc</td>
<td>desc</td>
<td class="val" data-key="new_value">key: newvalue</td>
<td class="val" data-key="old_value">key: oldvalue</td>
</tr>
<tr>
<td>abc3</td>
<td>desc2</td>
<td class="val" data-key="new_value">key: newvalue2</td>
<td class="val" data-key="old_value">key: oldvalue2</td>
</tr>
</tbody>
</table>
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 如何在选定的 tr 对象中选择 td
- 获取 innerText of td 返回错误对象 #
没有方法 'getElementsByTag - 对象 对象显示在 td 中
- Javascript:遍历对象数组以查找键值对并将它们呈现在表中 td
- 当我提醒“;这个“;鼠标悬停在<td>[对象窗口]弹出-那是什么
- 通过筛选TD对象类来设置只读列
- 表映射的第一行和第一个td从json对象填充